CMake語法—內置變量


CMake語法—內置變量

1 CMake變量分類

1.1 普通變量

​ 詳情可參見隨筆《普通變量與函數》《普通變量與子目錄》《普通變量與包含、宏》

1.2 緩存變量

​ 詳情可參見隨筆《緩存變量》

1.3 環境變量

​ 詳情可參見隨筆《環境變量》

1.4 內置變量

2 CMake內置變量分類

2.1 提供信息的變量

​ 詳情可參見官方文檔《Variables that Provide Information》

2.2 改變行為的變量

​ 詳情可參見官方文檔《Variables that Change Behavior》

2.3 描述系統的變量

​ 詳情可參見官方文檔《Variables that Describe the System》

2.4 控制構建的變量

​ 詳情可參見官方文檔《Variables that Control the Build》

2.5 語言變量

​ 詳情可參見官方文檔《Variables for Languages》

2.6 CTest變量

​ 詳情可參見官方文檔《Variables for CTest》

2.7 CPack變量

​ 詳情可參見官方文檔《Variables for CPack》

2.8 內部變量(不推薦再使用)

​ CMake還有很多內部變量,他們中的大多數都無正式文檔記錄。

​ 然而,其中一些變量在某些時候被描述為普通變量,因此可能會在遺留代碼中遇到。

​ 它們意思可能已經發生變化,不建議在項目代碼中使用。

​ 詳情可參見官方文檔《Internal Variables》

3 示例代碼

3.1 代碼結構

目錄結構

  • learn_cmake:為根目錄

  • build:為CMake配置輸出目錄(在此例中即生成sln解決方案的地方)

  • cmake_config.bat:執行CMake配置過程的腳本(雙擊直接運行)

    @echo off
    set currentDir=%~dp0
    set buildDir=%currentDir%
    set cmakeOutputDir=%currentDir%\build
    cmake -S %buildDir% -B %cmakeOutputDir% -G"Visual Studio 16 2019" -T v140 -A x64
    pause
    
  • CMakeLists.txt:CMake主腳本

3.2 代碼

下面打印部分內置變量的值,示例CMakeLists.txt代碼:

cmake_minimum_required(VERSION 3.18)

# 設置工程名稱
set(PROJECT_NAME KAIZEN)

# 設置工程版本號
set(PROJECT_VERSION "1.0.0.10" CACHE STRING "默認版本號")

# 工程定義
project (${PROJECT_NAME}
    LANGUAGES CXX C
    VERSION ${PROJECT_VERSION}
)

# 打印開始日志
message(STATUS "########## BEGIN_TEST_INTERNAL_VAR")

## 1 Variables that Provide Information

message(STATUS "1 CMAKE_CACHE_MAJOR_VERSION: ${CMAKE_CACHE_MAJOR_VERSION}")
message(STATUS "1 CMAKE_CACHE_MINOR_VERSION: ${CMAKE_CACHE_MINOR_VERSION}")
message(STATUS "1 CMAKE_CACHE_PATCH_VERSION: ${CMAKE_CACHE_PATCH_VERSION}")

message(STATUS "1 CMAKE_CURRENT_LIST_DIR: ${CMAKE_CURRENT_LIST_DIR}")
message(STATUS "1 CMAKE_VS_PLATFORM_TOOLSET: ${CMAKE_VS_PLATFORM_TOOLSET}")
message(STATUS "1 CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}\n")

## 2 Variables that Change Behavior

message(STATUS "2 CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
message(STATUS "2 CMAKE_FIND_ROOT_PATH: ${CMAKE_FIND_ROOT_PATH}")
message(STATUS "2 CMAKE_INCLUDE_PATH: ${CMAKE_INCLUDE_PATH}")
message(STATUS "2 CMAKE_SYSTEM_INCLUDE_PATH: ${CMAKE_SYSTEM_INCLUDE_PATH}\n")

## 3 Variables that Describe the System

message(STATUS "3 MSVC: ${MSVC}")
message(STATUS "3 CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
message(STATUS "3 MSVC_VERSION: ${MSVC_VERSION}")
message(STATUS "3 MSVC_TOOLSET_VERSION: ${MSVC_TOOLSET_VERSION}\n")

## 4 Variables that Control the Build

message(STATUS "4 CMAKE_AUTOMOC: ${CMAKE_AUTOMOC}")
message(STATUS "4 CMAKE_DEFAULT_BUILD_TYPE: ${CMAKE_DEFAULT_BUILD_TYPE}")
message(STATUS "4 CMAKE_LIBRARY_OUTPUT_DIRECTORY: ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
message(STATUS "4 CMAKE_INCLUDE_CURRENT_DIR: ${CMAKE_INCLUDE_CURRENT_DIR}")
message(STATUS "4 CMAKE_MSVCIDE_RUN_PATH: ${CMAKE_MSVCIDE_RUN_PATH}\n")

## 5 Variables for Languages

message(STATUS "5 CMAKE_C_STANDARD: ${CMAKE_C_STANDARD}")
message(STATUS "5 CMAKE_CXX_STANDARD: ${CMAKE_CXX_STANDARD}")
message(STATUS "5 CMAKE_COMPILER_IS_GNUCC: ${CMAKE_COMPILER_IS_GNUCC}")

# 打印結束日志
message(STATUS "########## END_TEST_INTERNAL_VAR\n")

3.3 運行結果

運行結果如下:

-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.17763.
-- The CXX compiler identification is MSVC 19.0.24245.0
-- The C compiler identification is MSVC 19.0.24245.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- ########## BEGIN_TEST_INTERNAL_VAR
-- 1 CMAKE_CACHE_MAJOR_VERSION:
-- 1 CMAKE_CACHE_MINOR_VERSION:
-- 1 CMAKE_CACHE_PATCH_VERSION:
-- 1 CMAKE_CURRENT_LIST_DIR: F:/learn_cmake
-- 1 CMAKE_VS_PLATFORM_TOOLSET: v140
-- 1 CMAKE_CURRENT_SOURCE_DIR: F:/learn_cmake

-- 2 CMAKE_BUILD_TYPE:
-- 2 CMAKE_FIND_ROOT_PATH:
-- 2 CMAKE_INCLUDE_PATH:
-- 2 CMAKE_SYSTEM_INCLUDE_PATH:

-- 3 MSVC: 1
-- 3 CMAKE_SYSTEM_NAME: Windows
-- 3 MSVC_VERSION: 1900
-- 3 MSVC_TOOLSET_VERSION: 140

-- 4 CMAKE_AUTOMOC:
-- 4 CMAKE_DEFAULT_BUILD_TYPE:
-- 4 CMAKE_LIBRARY_OUTPUT_DIRECTORY:
-- 4 CMAKE_INCLUDE_CURRENT_DIR:
-- 4 CMAKE_MSVCIDE_RUN_PATH:

-- 5 CMAKE_C_STANDARD:
-- 5 CMAKE_CXX_STANDARD:
-- 5 CMAKE_COMPILER_IS_GNUCC:
-- ########## END_TEST_INTERNAL_VAR

-- Configuring done
-- Generating done
-- Build files have been written to: F:/learn_cmake/build
請按任意鍵繼續. . .


免責聲明!

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



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