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

Reply via email to