KSpam wrote:
My company is using CMake to build a large number of projects (~300). The developers have complaints regarding the size (and load-time, etc) of the top-level solution file. I am attempting to address their concerns.

Take this hypothetical project hierarchy:

module-1/
        sub-module-1/
                project-1
        ...
        sub-module-n/
                project-n/
...
module-n/
        sub-module-1/
                project-1/
        sub-module-n/
                project-n/

In Linux, I can simply change to module-1/sub-module-1/project-1 and build from there. Any dependencies of the project will automatically be built as well. Unfortunately, this does not work with Visual Studio on Windows. On Windows, the dependencies are not automatically built when opening up a lower level solution file. Will this be addressed in CMake 2.6?

One option I have given to the users is the ability to switch between source and binary modules or sub-modules. For instance, the project would have the following options:

MY_BUILD_module-1:BOOL
MY_BUILD_sub-module-1:BOOL
...
MY_BUILD_module-n:BOOL
MY_BUILD-sub-module-n:BOOL

When all of the projects are built, I can manually switch off the build options for some of the modules and sub-modules. This allows us to create partial-source deliverables to customers (i.e. module-1 is delivered as headers and libs, and module-n is delivered as source). This also reduces the complexity of the top-level solution file. Additionally, this allows us to build sets of code against tagged release binaries.

To accomplish this scheme, I have to manipulate "*_LINK_TYPE", "*_LIB_DEPENDS" variables for modules and sub-modules that are turned OFF (I am using INTERNAL CACHE variables for this). I found that I have to configure twice prior to generating the build files any time a "MY_BUILD_*" option is toggled.

Ideally, I would like a way to prevent the generation of the build files until the second configure completes. Is there a way for me to accomplish this?


If you use the project command in each sub project cmake 2.6 will do the right thing and create sub-solutions that include all targets that they use in the larger project.

-Bill
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to