嵌套cmake 子目录cmake如何引用父目录cmake变量
在CMake中,如果你需要在子目录的CMakeLists.txt
中使用父目录设置的变量,你可以使用set
命令将变量传递到子目录,或者使用PARENT_SCOPE
选项保证变量在父目录中的可见性。
以下是一个简单的例子:
假设你有一个父目录的CMakeLists.txt
,它设置了一个变量:
# 父目录/CMakeLists.txt
set(PARENT_VARIABLE "value" CACHE INTERNAL "Parent variable")
add_subdirectory(child_directory)
然后在子目录中,你可以直接访问这个变量:
# 子目录/CMakeLists.txt
message(STATUS "Parent variable value: ${PARENT_VARIABLE}")
如果你需要在子目录中修改这个变量并且希望这个变化在父目录中反映出来,你可以这样做:
# 父目录/CMakeLists.txt
set(PARENT_VARIABLE "value" CACHE INTERNAL "Parent variable")
# 子目录/CMakeLists.txt
set(PARENT_VARIABLE "new value" PARENT_SCOPE)
在子目录的CMakeLists.txt
中,我们使用PARENT_SCOPE
选项更新了变量,这样它的新值就会传递到父目录的作用域中。