I'm not happy with our build environment for our Linux based (Ubuntu 10.04) equipment. It is embedded software we are developing. What I would like is to have the optimal mix of these wishes:
- Use proven tools and libraries
- Be able to develop on both Linux and Windows
- Ideally: use the same tooling on both platforms
- Have a fast development cycles, especially on Windows
Note that paying for good stuff is definitely an option. Note also that C++ and Linux are the only two hard requirements, everything else is open for debate.
We currently use Boost and STL libraries for obtaining as much platform independence as possible. CodeBlocks is our cross-platform IDE and we use the gcc tool-chain (compiler, linker, debugger, not make). All are excellent open source projects but they have their limitations.
Biggest problems with the current environment:
- Compared with MS Visual C++, I feel gcc is very slow. A lot of time is spent compiling and especially linking. gcc's pre-compiled header support gives you no way near the same performance gain as with VC and with boost you really need it. Also, statically linking a few boost libraries takes forever. (Would using dynamic linking change much?)
- CodeBlocks has no support for what in VC are property files. This makes it difficult to enforce that build options are the same for all projects in the workspace.
- Related to build speed: CodeBlocks has no "compile this project only" support like VC has. When changing a single source file, CodeBlocks spends too much time checking for the need to compile files I know haven't changed.
Some of my own thoughts so far:
- Biggest issue is having a fast, reliable compiler and linker on all platforms we develop on. If this is solved what about doing development on multiple platforms? Are Intel C++ compilers an option (we don't really need the performance optimization of those compilers)? Should we consider doing cross compilation?
- Should we use a make based build? It seems a solution when it proves difficult to use the same IDE/build tooling on windows and Linux. I find make difficult so that is holding me back.
- Is there a single product of equivalent maturity as Visual Studio (IDE and tool chain) available for Windows and Linux? Or for that matter, for Linux only?
- How much simpler would life be if we decided develop only on Linux? Right now we all use Windows as it is supported by IT, our non-development software is all windows and we have limited Linux expertise in our company.
Your thoughts please.