CMake之常用內置變量和message用法


關於

  • 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("")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM