Hi, On Friday 15 June 2007 02:54, kitts wrote: ... > I cannot publish the source but let me describe how i do it now with my > project at work. > > In the top level cmakelists.txt I include the subdirectories of the various > modules in our project. The first subdirectory included is called platform. > > The platforms folder contains configuration details about a particular > board that we support. This is the only information that is passed to CMake > on the command (ex: -DPLATFORM=ABC). The configuration includes information > on which compiler to use and which processor, the drives that are to be > included and the modules that need to be included.
How do you do this ? INCLUDE(${PLATFORM}) in your top level CMakeLists.txt ? > The next directory that is included is the arch directory. This directory's > cmakelists.txt sets up the compiler settings and the arch and variant > specific defines and flags. Here it builds a libray called "hal". > > Now all other folders contain the various modules we support by building a > library for each module that was selected for the platform. > > With this approach the problems i have are such: > 1) Not always are settings made in a sub folder applied throughout the > project. Especially settings wrt to library prefix and suffix. This shouldn't be a problem with the approach in CMake cvs. But it will not be possible to switch between different toolchains within one buildtree, this would break too much (e.g. all TRY_COMPILE()/TRY_RUN()/FIND_XXX() tests) > 2) Setting up an assembler. We invariably need assembly file support when > dealing with embedded systems. Ok. How do you do this currently ? > 3) When setting up the build environment for the first time, cmake needs to > be called from the shell as we need to pass -DPLATFORM=ABC. If we dont the > compiler gets set to the system default and that cannot be changed. This won't change (except that this parameter is currently called CMAKE_TOOLCHAIN_FILE, maybe I'll rename it to CMAKE_TOOLCHAIN, since that's shorter). > 4) calling PROJECT() seems to destroy a lot of settings already configured. > If called before making custom settings the compiler is set and cannot be > changed... Changing the compiler from within a cmake file is not really supported. This means you can do it but it's not the "official" way. Bye Alex _______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake