[CMake] List of components being build.
Schwartz, Philip
Philip.Schwartz at lexisnexis.com
Tue Feb 2 16:30:41 EST 2010
My current project has many components that need to be built. Some portions of our code depend on others and using add_subdirectory, I am having an issue where I get multiple of my targets loaded causing a faliure.
I placed the add_subdirectory in a macro that uses a simple hash style of access
set ( BUILD_MAP_${_name} 1 ) where ${_name} is the target name.
I have an if statement in the macro that tests if BUILD_MAP_${_name} is defined. The issue is say I have a custom mysqlclient that is used by 3 of my projects that are all built as part of "all".
Project A: Depends on Mysqlclient
Project B: Depends on Mysqlclient
Project C: Depends on Mysqlclient
Dir structure
all/
/lib/Mysqlclient
/bin/Project A
/bin/Project B
/bin/Project C
each of these folders have a CMakeLists.txt. The all/CMakeLists.txt has the following
project(all)
add_subdirectory(lib/Mysqlclient)
add_subdirectory(bin/Project A)
add_subdirectory(bin/Project B)
add_subdirectory(bin/Project C)
When building from the top level and having a definition of "-lmysqlclient" everything works as expected. The issue comes up when I do not want to build all of the source.
Say I would like to build only Project B.
from my build directory, I would run cmake ~/all/Project B.
The cmake process ends without issue, but the make fails on link due to the missing Mysqlclient library not being built. I want to be able to declare dependencies for each project that way I can build each seperately from the top level. So far using a macro to do the add_subdirectory fails because even though I check to see if BUILD_MAP_${_name} is defined, the add_subdirectory command is still run as if the BUILD_MAP_${_name} is not defined (if defined, only an add_dependencies should be run)
Any help would be greatly appreciated.
________________________________
This message (including any attachments) contains confidential information intended for a specific individual and purpose, and is protected by law. If you are not the intended recipient, you should delete this message. Any disclosure, copying, or distribution of this message, or the taking of any action based on it, is strictly prohibited.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100202/5a5e8ec3/attachment-0001.htm>
More information about the CMake
mailing list