我正在尝试重复使用我不想更改其来源的第三方项目的CMakeLists.txt
(确切地说是expat)。我已使用add_subdirectory
将项目添加为顶级子项目。
这有效,但现在我想在顶级option
中设置一些子项目的CMakeLists.txt
s的值。我该怎么做?
答案 0 :(得分:21)
答案 1 :(得分:19)
如果子项目使用option
(不是set
)进行配置设置,则可以在添加子目录之前使用option
指定值:
option(LIB_OPTION1 "" OFF)
option(LIB_OPTION2 "" ON)
add_subdirectory(${CMAKE_SOURCE_DIRECTORY}/lib)
答案 2 :(得分:4)
您可以在调用ADD_SUBDIRECTORY
之前使用所需的设置(ON或OFF)定义选项。这将优先于expat的OPTION
中的CMakeLists.txt
命令,因为OPTION
的最后一个参数只是默认值(如果已经设置了该值,则会被忽略存在)。
答案 3 :(得分:-3)
SET命令具有'PARENT_SCOPE'选项:
If PARENT_SCOPE is present, the variable will be set in the scope above the current
scope. Each new directory or function creates a new scope. This command will set the
value of a variable into the parent directory or calling function (whichever is
applicable to the case at hand). PARENT_SCOPE cannot be combined with CACHE.
(见:http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:set)