当前位置: 首页 > news >正文

CMake set的使用

CMake set的使用

CMake set的使用笔记


一、定义变量(简化源文件列表)

1. 为什么要定义变量?

当项目的源文件很多时,直接把所有文件名写在 add_executable 里会非常麻烦。用 set 命令定义一个变量来存储源文件列表,可以让代码更简洁、更易维护。

2. 核心命令:set

  • 语法格式set(VAR_NAME value1 value2 ...)
  • 作用:创建一个名为 VAR_NAME 的变量,并赋值为后面的内容。
  • 使用方法:通过 ${VAR_NAME} 的形式来引用这个变量的值。

3. 两种定义源文件列表的方式

你可以用空格或分号来分隔文件:

# 方式1:用空格分隔文件(推荐,更易读)
set(SRC_LIST add.cpp div.cpp mul.cpp main.cpp sub.cpp)# 方式2:用分号分隔文件
set(SRC_LIST add.cpp;div.cpp;mul.cpp;main.cpp;sub.cpp)

4. 在 add_executable 中使用变量

定义好变量后,就可以直接在 add_executable 中使用它:

# 直接引用 SRC_LIST 变量,效果和直接写文件名一样
add_executable(calc ${SRC_LIST})

二、指定 C++ 标准(如 C++11/14/17/20)

在 CMake 中指定 C++ 标准,有两种常用方式:

方式1:在 CMakeLists.txt 中用 set 指定(推荐)

直接在配置文件里写死,一劳永逸:

# 指定项目使用的 C++ 标准
# set(CMAKE_CXX_STANDARD 11)  # C++11
# set(CMAKE_CXX_STANDARD 14)  # C++14
set(CMAKE_CXX_STANDARD 17)    # C++17(项目推荐用这个)# 强制要求编译器必须支持指定的标准,不支持则报错
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 禁用非标准扩展,确保代码的可移植性
set(CMAKE_CXX_EXTENSIONS OFF)

方式2:在执行 cmake 命令时动态指定

这种方式优先级更高,会覆盖 CMakeLists.txt 里的设置,适合临时修改:

# 指定用 C++11 标准编译
cmake .. -DCMAKE_CXX_STANDARD=11# 指定用 C++17 标准编译
cmake .. -DCMAKE_CXX_STANDARD=17

三、指定可执行文件的输出路径

默认情况下,可执行文件会生成在 build 目录里。你可以通过 EXECUTABLE_OUTPUT_PATH 宏来自定义它的生成位置。

1. 基础用法

# 定义一个变量存储目标路径(这里是 Linux 下的示例路径)
set(PROJECT_ROOT ${CMAKE_CURRENT_SOURCE_DIR})# 设置可执行文件输出到项目根目录下的 bin 文件夹
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_ROOT}/bin)

2. 关键说明

  • 路径中的子目录如果不存在,CMake 会自动创建,无需手动新建。
  • 路径可以是绝对路径(如 /home/xxx/...),也可以是相对路径。
  • 相对路径是相对于 Makefile 所在的 build 目录的。

四、完整示例(整合以上所有功能)

下面是一个整合了变量、C++17、自定义输出路径的完整 CMakeLists.txt,你可以直接复制使用:

#[[这是一个四则运算的cmake]]
#这是一个四则运算的cmake# 指定 CMake 最低版本
cmake_minimum_required(VERSION 3.15)# 定义项目名称
project(calculator)# 定义项目根目录路径
set(PROJECT_ROOT ${CMAKE_CURRENT_SOURCE_DIR})# 设置可执行文件输出到项目根目录下的 bin 文件夹
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_ROOT}/bin)# 指定项目使用 C++17 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)# 定义源文件列表变量
set(SRC_LISTmain.cppadd.cppsub.cppmul.cppdiv.cpp
)# 生成可执行文件 calc,依赖 ${SRC_LIST} 中的所有文件
add_executable(calc${SRC_LIST}
)
http://www.jsqmd.com/news/860754/

相关文章:

  • 真正准的语义向量方案
  • 2026好用的视频去水印软件怎么选?热门去水印工具全方位对比测评 - 科技热点发布
  • 2026抖音去水印怎么做?在线免费去水印工具与视频解析方案全盘点 - 科技热点发布
  • 即梦去水印怎么保存图片?2026 即梦去水印教程方法详解 - 科技热点发布
  • 豆包视频去水印怎么操作?2026实测入口+操作方法+工具盘点 - 科技热点发布
  • 2026 东莞专业搬家公司排行 年度热门商家 TOP5 推荐 - 从来都是英雄出少年
  • 爬22域名成交
  • 抖音视频怎么去水印?2026年最新免费抖音一键去水印免费方法合集 - 科技热点发布
  • 2026电脑手机免费去水印软件怎么选?这5款本地视频去水印工具实测对比 - 科技热点发布
  • TOP10空气能一线品牌有哪些|空气能头部品牌全梳理(2026版) - 匠言榜单
  • 即梦去水印小程序怎么用?2026实测对比,选哪款工具最高效 - 科技热点发布
  • 在线去除视频水印用什么工具?2026免费去除视频水印工具推荐与对比 - 科技热点发布
  • X-Rite爱色丽色差仪Ci6X出现“光源失败”,“白色校准失败”故障,色差仪快修请认准七彩仪器 - 品牌企业推荐师(官方)
  • 2026免费在线去水印工具怎么选?无水印好用推荐指南 - 科技热点发布
  • 浦江哪里可以做白发养黑?黑奥秘超200万用户案例见证,行业标准制定者更专业 - 美业信息观察
  • 小红书视频怎么在线提取?小红书视频解析在线提取方法与工具2026实测指南 - 科技热点发布
  • 2026小红书怎么关闭下载水印?官方方法+最新去水印工具详解 - 科技热点发布
  • 冲刺博客6
  • 2026养发加盟标杆项目推荐:黑奥秘VS丝域,谁是创业优选? - 品牌企业推荐师(官方)
  • YOBECON,和现代消费者一起关注“干净天然” - 品牌企业推荐师(官方)
  • 2026 十大养发加盟实力品牌排行榜|创业避坑干货,选错直接白亏钱 - 品牌企业推荐师(官方)
  • 2026年免费图片去水印工具盘点:在线软件和手机APP如何选?实测推荐 - 科技热点发布
  • 2026东莞专业搬家公司推荐 精密仪器搬运安全有保障 - 从来都是英雄出少年
  • 2026-05-21
  • 172号卡:一个数字,看懂一个平台的诚意.首码10000 - 172号卡
  • 2026东莞正规搬家公司避坑指南 隐性消费套路大揭秘 - 从来都是英雄出少年
  • 5.21 最新!南京黄金回收榜单:3 家门店权威对比,附避坑攻略 - 资讯纵览
  • APK Installer:重新定义Windows运行Android应用的突破性方案
  • 2026芜湖黄金回收商家推荐:正规门店,监控录像保安全 - 品牌企业推荐师(官方)
  • Python爬虫实战:requests + BeautifulSoup4采集经典标靶网站哲理名言,并导出结构化文件!