CMake語法—函數(定義&調用)


CMake語法—函數(定義&調用)

1 CMake函數定義與調用示例

1.1 CMakeLists.txt

cmake_minimum_required(VERSION 3.18)

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

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

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

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

# 定義函數
function(func)
    #1. 打印調用日志
    message(STATUS "call func")
    #2. 控制語句示例
    if (CMAKE_SIZEOF_VOID_P EQUAL 4)
        message(STATUS "X86")   # 32位系統,打印X86
    elseif (CMAKE_SIZEOF_void_p EQUAL 8)
        message(STATUS "X64")   # 32位系統,打印X64
    endif()
endfunction(func)

# 調用函數:函數名不區分大小寫:
# 調用方式一:
func()
# 調用方式二:
FUNC()
# 調用方式三:
fuNC()
# 調用方式四(3.18及以上版本):
cmake_language(CALL func)
# 調用方式四(3.18及以上版本):
cmake_language(CALL FunC) 
## call必須大寫
## cmake_language(call func)

# 打印結束日志
message(STATUS "##########END_TEST")

1.2 執行CMake配置(cmake_config.bat)腳本

@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

1.3 目錄結構

  • learn_cmake:為根目錄
  • build:為CMake配置輸出目錄(在此例中即生成sln解決方案的地方)
  • cmake_config.bat:執行CMake配置過程的腳本(雙擊直接運行)
  • CMakeLists.txt:CMake腳本

2 運行結果

2.1 環境說明

本地安裝VS版本:Visual Studio 2019(2015工具集)

CMake版本:3.18.2

F:\learn_cmake
λ cmake --version
cmake version 3.18.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

2.2 運行結果

F:\learn_cmake
λ .\cmake_config.bat
-- Selecting Windows SDK version 10.0.18362.0 to target Windows 6.2.9200.
-- 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
-- call func
-- call func
-- call func
-- call func
-- call func
-- ##########END_TEST
-- Configuring done
-- Generating done
-- Build files have been written to: F:/learn_cmake/build
請按任意鍵繼續. . .

2.3 結論

2.3.1 定義或調用函數時,函數名不區分大小寫

從示例程序32、34、36行可以分析而得

2.3.2 CMake內置命令不區分大小寫

從示例程序23、25行可以分析而得:CMAKE_SIZEOF_VOID_P為內置,25行大小寫不一致,可以正常被識別和運行

2.3.3 cmake_language調用函數時,CALL必須大寫

從示例程序中38、40正常,42異常分析所得

2.3.4 endfunction(func)的func函數名可省略

在示例程序28行,去掉func函數名,可以正常執行


免責聲明!

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



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