CMake入门教程【基础篇】变量(set)

发布时间:2024年01月01日

0.作用

在CMake中,set命令用于定义变量并赋予其值。它有多种用法和选项,以下是set命令的常见用法和示例:

1.变量定义

定义一个变量并赋值

set(variable_name value)

eg:

set(SRC_FILES main.cpp foo.cpp bar.cpp)

上述示例定义了一个名为SRC_FILES的变量,并将其赋值为main.cppfoo.cppbar.cpp

2.设置变量的类型

通过指定类型选项,可以将变量设置为不同的类型,如字符串、列表等。

set(variable_name value CACHE type "description" [FORCE])

示例:

set(MY_STRING "Hello, CMake!" CACHE STRING "My string variable")
set(MY_LIST 1 2 3 4 5 CACHE LIST "My list variable")

上述示例分别定义了一个字符串类型的变量MY_STRING和一个列表类型的变量MY_LIST

3.设置环境变量

通过指定环境变量选项,可以将变量设置为环境变量。

set(variable_name value ENVIRONMENT environment_variable)

示例:

set(MY_PATH "/path/to/my/directory" ENVIRONMENT PATH)

上述示例将MY_PATH变量设置为环境变量PATH的值。

4.使用PARENT_SCOPE选项

通过指定PARENT_SCOPE选项,可以将变量设置为父级作用域中的变量。

set(variable_name value PARENT_SCOPE)

示例:

function(my_function)
  set(MY_VARIABLE "Hello" PARENT_SCOPE)
endfunction()

my_function()
message("MY_VARIABLE: ${MY_VARIABLE}")

上述示例中,MY_VARIABLE变量在my_function函数中设置,并使用PARENT_SCOPE选项将其设置为父级作用域中的变量。

5.使用APPEND选项

通过指定APPEND选项,可以将值追加到列表类型的变量中。

set(variable_name value APPEND)

示例:

set(MY_LIST 1 2 3)
set(MY_LIST ${MY_LIST} 4 5 6 APPEND)
message("MY_LIST: ${MY_LIST}")

上述示例中,将4、5、6追加到MY_LIST列表变量中。

这些示例展示了set命令的一些常见用法,但还有其他选项和用法可以根据需要进行使用。更多关于set命令的详细信息可以查阅CMake的官方文档。

6.设置默认值

如果你想设置一个名为XXXXXXXXXX的变量的默认值为OFF,可以使用以下代码:

set(XXXXXXXXXX_DEFAULT OFF)
set(XXXXXXXXXX ${XXXXXXXXXX_DEFAULT} CACHE BOOL "XXXXXXXXXX option")

在这个示例中,我们首先使用set命令为XXXXXXXXXX_DEFAULT变量设置默认值为OFF。然后,我们使用set命令将XXXXXXXXXX变量设置为${XXXXXXXXXX_DEFAULT}的值,并将其设置为缓存变量(使用CACHE选项)。缓存变量可以在构建过程中使用cmake -D选项修改其值。

请注意,为了使缓存变量可见,我们还添加了一个描述字符串,以便在CMake生成的配置界面或帮助文档中显示。

使用上述代码,XXXXXXXXXX变量的默认值将为OFF。如果需要修改该值,可以使用以下命令:

cmake -DXXXXXXXXXX=ON ..

这将将XXXXXXXXXX变量的值设置为ON

7.重复定义

# set a variable only if undefined
macro(SetIfUndefined var_ value_)
   if (NOT DEFINED ${var_})
      set(${var_} ${value_})
   endif()
endmacro(SetIfUndefined)
文章来源:https://blog.csdn.net/hiwoshixiaoyu/article/details/134842708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。