CMake之常用内置变量和message用法

关于

  • cmake 定义了相当丰富的变量,然而,我常用的也就那几个
  • 脑子笨,记不住变量的值时,我会使用cmake的message函数输出变量值
  • 为什么要写这个? 最近尝试使用Modern CMake, 出现了一些问题,但是不知道出现在配置文件的哪里,于是想到了使用message函数作为 “调试输出”
  • 与其记住,倒不如来个更加方便的方法,得到准确的变量值
  • 这里就不聊具体的变量用法,如果不熟悉,请参考CMAKE的官方文档
  • 官方variables

一个例子

  • message的一个例子:
message("CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}")

使用命令cmake .. (习惯将cmake输出到build目录) 就可观察到输出结果(cmake gui 将会输出到输出窗口)
CMAKE_SOURCE_DIR = xxxxx // XXX根据路径而定
我的机器输出值:

  • 那么,我们就可使用message输出变量值

cmake常见内置变量

既然是变量,其值是可以修改的。 常见内置变量:

序号 名称
1 PROJECT_BINARY_DIR
2 PROJECT_SOURCE _DIR
3 CMAKE_CURRENT_SOURCE_DIR
4 CMAKE_CURRRENT_BINARY_DIR
5 CMAKE_CURRENT_LIST_FILE
6 CMAKE_CURRENT_LIST_LINE
7 CMAKE_MODULE_PATH
8 CMAKE_SOURCE_DIR
9 EXECUTABLE_OUTPUT_PATH
10 LIBRARY_OUTPUT_PATH
11 PROJECT_NAME
12 PROJECT_VERSION_MAJOR
13 PROJECT_VERSION_MINOR
14 PROJECT_VERSION_PATCH
15 CMAKE_SYSTEM
16 CMAKE_SYSTEM_NAME
17 CMAKE_SYSTEM_VERSION
18 BUILD_SHARED_LIBS
19 CMAKE_C_FLAGS
20 CMAKE_CXX_FLAGS
21 CMAKE_SYSTEM_PROCESSOR

代码已经写好了:

cmake_minimum_required(VERSION 3.18)

project(show_vars VERSION 1.0.1)

# 为了分行确定输出内容
message("")

message("1.PROJECT_BINARY_DIR = ${PROJECT_BINARY_DIR}")
message("2.PROJECT_SOURCE _DIR = ${_DIR}")
message("3.CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message("4.CMAKE_CURRRENT_BINARY_DIR = ${CMAKE_CURRRENT_BINARY_DIR}")
message("5.CMAKE_CURRENT_LIST_FILE = ${CMAKE_CURRENT_LIST_FILE}")
message("6.CMAKE_CURRENT_LIST_LINE = ${CMAKE_CURRENT_LIST_LINE}")
message("7.CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
message("8.CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
message("9.EXECUTABLE_OUTPUT_PATH = ${EXECUTABLE_OUTPUT_PATH}")
message("10.LIBRARY_OUTPUT_PATH = ${LIBRARY_OUTPUT_PATH}")
message("11.PROJECT_NAME = ${PROJECT_NAME}")
message("12.PROJECT_VERSION_MAJOR = ${PROJECT_VERSION_MAJOR}")
message("13.PROJECT_VERSION_MINOR = ${PROJECT_VERSION_MINOR}")
message("14.PROJECT_VERSION_PATCH = ${PROJECT_VERSION_PATCH}")
message("15.CMAKE_SYSTEM = ${CMAKE_SYSTEM}")
message("16.CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}")
message("17.CMAKE_SYSTEM_VERSION = ${CMAKE_SYSTEM_VERSION}")
message("18.BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}")
message("19.CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}")
message("20.CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
message("21.CMAKE_SYSTEM_PROCESSOR   = ${CMAKE_SYSTEM_PROCESSOR}")
# 为了分行确定输出内容
message("")

一个输出例子

[cmake] 1.PROJECT_BINARY_DIR = C:/Users/xxxx/xxxx/CMAKE_VAR/build
[cmake] 2.PROJECT_SOURCE _DIR = 
[cmake] 3.CMAKE_CURRENT_SOURCE_DIR = C:/Users/xxxx/xxxx/CMAKE_VAR
[cmake] 4.CMAKE_CURRRENT_BINARY_DIR = 
[cmake] 5.CMAKE_CURRENT_LIST_FILE = C:/Users/xxx/xxxx/CMAKE_VAR/CMakeLists.txt
[cmake] 6.CMAKE_CURRENT_LIST_LINE = 14
[cmake] 7.CMAKE_MODULE_PATH = 
[cmake] 8.CMAKE_SOURCE_DIR = C:/Users/xxxx/xxxx/CMAKE_VAR
[cmake] 9.EXECUTABLE_OUTPUT_PATH = 
[cmake] 10.LIBRARY_OUTPUT_PATH = 
[cmake] 11.PROJECT_NAME = show_vars
[cmake] 12.PROJECT_VERSION_MAJOR = 1
[cmake] 13.PROJECT_VERSION_MINOR = 0
[cmake] 14.PROJECT_VERSION_PATCH = 1
[cmake] 15.CMAKE_SYSTEM = Windows-10.0.22000
[cmake] 16.CMAKE_SYSTEM_NAME = Windows
[cmake] 17.CMAKE_SYSTEM_VERSION = 10.0.22000
[cmake] 18.BUILD_SHARED_LIBS = 
[cmake] 19.CMAKE_C_FLAGS = /DWIN32 /D_WINDOWS
[cmake] 20.CMAKE_CXX_FLAGS = /DWIN32 /D_WINDOWS /GR /EHsc
[cmake] 21.CMAKE_SYSTEM_PROCESSOR   = AMD64
posted @ 2020-09-19 22:56  mohist  阅读(14646)  评论(2)    收藏  举报