CMake中设置变量的作用域问题记录
在CMakeLists.txt中,我们通常会去使用set或者option去设置环境变量。而设置这些变量的作用域是向下传递的。这样就会遇到一个问题。
--root
-A
-CMakeLists.txt
-B
-CMakeLists.txt
-CMakeLists.txt
如果在root下面的CMakeLists.txt中
add_subdirectory(A)
add_subdirectory(B)
这时A在A中使用set或者option去设置变量控制B,会发现变量在B中并没有生效。
解决方法
1、set(变量 变量值 PARENT_SCOPE),加上PARENT_SCOPE就可以在B中访问A中设置的变量
2、在A中CMakeLists.txt中加入add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../B ../B),将B作为A的子项目。
3、将变量放到root下面的CMakeLists.txt中去设置。

浙公网安备 33010602011771号