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函数名,可以正常执行

posted @   kaizenly  阅读(2568)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示