嵌套cmake 子目录cmake如何引用父目录cmake变量

嵌套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选项更新了变量,这样它的新值就会传递到父目录的作用域中。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CMake中,要添加子目录,需要在目录CMakeLists.txt文件中使用add_subdirectory()命令。这个命令的语法是add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])。source_dir是子目录的路径,binary_dir是可选的二进制输出路径,EXCLUDE_FROM_ALL是可选的参数,用于指示该子目录是否被排除在构建过程之外。 在目录CMakeLists.txt文件中,你可以使用add_subdirectory()命令来添加一个子目录,并且在构建过程中同时构建该子目录。同时,在子目录CMakeLists.txt文件中,你可以定义该子目录的源文件、头文件等。例如,你的目录结构可以是这样的: ├── CMakeLists.txt # 目录CMakeLists.txt ├── main.cpp # 目录的源文件,包含main函数 └── sub # 子目录 ├── CMakeLists.txt # 子目录CMakeLists.txt ├── test.h # 子目录的头文件 └── test.cpp # 子目录的源文件 在目录CMakeLists.txt文件中,你可以添加如下代码来添加子目录: ``` add_subdirectory(sub) ``` 这样,当你构建目录时,CMake会自动构建子目录,并将子目录中的源文件和头文件包含在构建过程中。这样,你就可以在目录中使用子目录中定义的函数和变量了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CMake入门二——子目录嵌套](https://blog.csdn.net/weixin_44688770/article/details/128855559)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [[cmake][转载]add_subdirectory详解](https://blog.csdn.net/FL1623863129/article/details/120968730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值