😈「CSDN主页」:传送门
😈「Bilibil首页」:传送门
😈「本文的内容」:CMake入门教程
😈「动动你的小手」:点赞👍收藏??评论📝
在CMake中理解变量的作用域对于编写有效和可维护的CMake脚本至关重要。本教程将深入探讨CMake中变量的作用域及其使用。
CMake主要处理两种类型的变量:
在CMake中,变量的作用域是由其定义的上下文决定的:
普通变量的作用域通常局限于其被定义的目录和子目录。当在CMakeLists.txt
文件或包含的文件(通过include
命令)中设置变量时,这些变量仅在当前处理的CMake目录及其子目录中可见。
cmakeCopy code
set(MY_VAR "Hello") # 在当前目录和子目录中可见
缓存变量在整个项目范围内可见,可以跨多次CMake配置运行保持其值。通过set()
命令并使用CACHE
选项创建缓存变量:
cmakeCopy code
set(MY_CACHE_VAR "World" CACHE STRING "A cache variable")
在子目录中对变量进行修改不会影响父目录中的同名变量。每个目录可以有自己的变量版本,子目录中的变量更改仅在该子目录及其子目录中有效。
在函数或宏内部设置的变量仅在该函数或宏的作用域内有效。调用函数或宏时,它们无法修改父作用域中的变量,除非使用PARENT_SCOPE
选项。
function(my_function)
set(MY_VAR "Local" PARENT_SCOPE)
endfunction()
可以通过函数参数将变量从一个作用域传递到另一个作用域。
function(print_var VAR)
message("${VAR}")
endfunction()
set(MY_VAR "Hello World")
print_var(${MY_VAR})
为了避免混淆和潜在的错误,建议:
理解并正确使用变量的作用域有助于提高CMake脚本的可读性和可维护性。通过遵循这些指导原则,您可以确保CMake项目的配置逻辑清晰且易于管理。