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中去设置。

posted @   cyssmile  阅读(307)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2020-09-27 gdb调试技巧
点击右上角即可分享
微信分享提示