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中去设置。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2020-09-27 gdb调试技巧