Are there any good options for compiling and uploading from the command line on OSX? I'm working on a project that would be easier if I could muck with make files (I can explain if needed, but the Arduino IDE is pretty limited for someone that writes code professionally).
I've tried out ino (inotool.org), however I'm having no success converting from an existing Arduino sketch. It just doesn't seem to recognize either the libraries I've installed for Arduino (which include a number of personal ones) or even ones placed in the ino projects lib directory.
I can explain if needed, but the Arduino IDE is pretty limited for someone that writes code professionally
Well, you need to, then. I write code for a living, and I haven't had any problems living with the IDE.
Well, besides being a horrible editor (but I use emacs as an external editor and switch back and forth to the IDE for compiling), it doesn't provide options for more restricted compilation options. I'm a strong believer that all compilation warnings should be considered errors, however since you can't set GCC options via the IDE you can't enable that.
But beyond the generics of wanting a more customizable compilation experience, in my current case I've built a module with a PCB that has an integrated Arduino and a number of generic outputs that could be connected to number of external devices. I'm going to have a number of these modules talking to each other, all running off the same code base. To configure these modules the code needs to know which device is attached to which set of outputs, as well as some metadata about those external devices (their relative geometry is the main one currently).
As these devices are all different, my current method for configuring them is that I have a config.h file that has a #define'd constant indicating the module number, and then a config.cpp that has a #if/#elif chain to do the configuration based on the module number. When I make a code change I then have to connect each module, set the current module number in the config.h and upload the value. Clearly this isn't a very elegant approach nor will it scale well as the number of modules I'm working with begins to grow (I currently have about half a dozen, but expect to have several dozen when I'm done).
If I could do the compilation and uploading via command line (and I was hopeful that the ino tool would let me, its just not working for me for some reason, possibly due to not being updated since Maverick came out), I could script out the entire configuration process and just have module.conf file for each module. The configuration process could be simplified to:
Requests the module # from the module
Locates the conf file for the module, injects it appropriately into the C code