Managing COLLADA build with CMake


Are there any plans to consolidate all the builds for various platform+variation into CMake so we can dispense with maintaining so many build/project files.


I assume you’re referring to the Collada DOM?

You’re right that the DOM’s build architecture kind of sucks because all these different project files create a maintenance nightmare. The people who originally designed our build architecture didn’t think things through properly.

I’m working on issues related to our build architecture right now in fact, in the “lib-merge” branch on SourceForge. We currently have build files for Visual Studio 2003, VS 2005, XCode, and GNU make (used for building on Linux and PS3). I’m planning on consolidating the Mac support into the makefiles and removing the XCode project. The VS 2003 .sln is going to be dropped. After that we’ll just have two sets of build files, the VS 2005 files and the makefiles.

That was all I was planning on doing for the upcoming DOM 2.0 release, but if there’s time I may look further into CMake. Visual Studio’s support for managing different project configurations just plain blows, and the DOM has many different configs. If we could push those config options out to CMake so that we didn’t have to deal with Visual Studio’s horrible multi-config support, that’d be a pretty big win. Plus we could continue to maintain our VS 2003 support, which I was going to drop. All in all it sounds like a good idea.

The only qualm I have about CMake is I’m not sure if it supports all the cool stuff that our newly rewritten (in the lib-merge branch) make build architecture supports. For example I can now do a batch build of all the different DOM configurations at once, I can easily compile a single source file if I want, all the dependency information is recorded in a single non-recursive make setup so parallel make works flawlessly, there’s a test target for running the automated tests, etc. There’s an awesome power with makefiles in that make is a full Turing-complete programming language, and I take advantage of many of its features in our new make build architecture. If CMake couldn’t support all these things I’m not sure I’d want to use it for all platforms.

Hope that answers your question anyway.


I merged the lib-merge branch back to the trunk last night. The new make build architecture supports Linux, Mac, and PS3, and the XCode project has been removed. There’s a readme in the DOM for using the makefiles. The VS 2003 build files have been removed also.

To be perfectly honest, I’m very pleased with the make build architecture and it’s unlikely at this point that I would throw it away in favor of CMake. If anything, I might consolidate the Windows build into the makefiles, so all platforms use the same build architecture.