關於
- cmake 定義了相當豐富的變量,然而,我常用的也就那幾個
- 腦子笨,記不住變量的值時,我會使用cmake的message函數輸出變量值
- 為什么要寫這個? 最近嘗試使用Modern CMake, 出現了一些問題,但是不知道出現在配置文件的哪里,於是想到了使用message函數作為 “調試輸出”
- 與其記住,倒不如來個更加方便的方法,得到准確的變量值
- 這里就不聊具體的變量用法,如果不熟悉,請參考CMAKE的官方文檔
一個例子
- 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("")