Dear CMake users,
Maybe my question is trivial for most, but still I do not find an
answer on my own!
If you have a project and some sub-project (or module or whatever the
jargon is) that are both managed with CMake, they should be in separate
directories (directory trees), and each of them have a CMakeLists.txt
in the root directory, where the sub-project is "included" into the
main project with an ADD_DIRECTORY() etc. So far so clear.
But then I learned that it is good practice to ensure that the sub-
project would also be "buildable" with cmake separately. My problem is
about how to pass options from the main to the sub project in such a
way that this is working properly, i.e.:
- if the sub project is part of the main project it would simply take
over the option from the main project level
- but if the sub project is being built standalone, the option is not
defined and should be set e.g. in cmake-gui
If I write now in the sub project
IF(THAT_OPTION)
...
this will be true if THAT_OPTION was set to ON in the main project. So
far so good. But the expression is now so "clever" that it cannot
distinguish between THAT_OPTION being set to OFF in the main project,
or THAT_OPTION not being defined at all - like in a standalone build!
One way would be to have an additional option or variable
BUILDING_MAINPROJECT which is set to ON or TRUE in the main project and
can be checked. However, I have so far not seen any CMakeLists.txt with
such a code, so ... what are the experts doing in such a case?
Thanks and regards,
Cornelis
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake