Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
c++ cmake的基本用法怎么写_c++ cmake使用教程_创想鸟

c++ cmake的基本用法怎么写_c++ cmake使用教程

CMake通过CMakeLists.txt生成构建系统,首先创建项目结构及CMake配置文件,设置版本、项目名、C++标准并定义可执行目标,接着在build目录中运行cmake命令生成Makefile并编译,支持多源文件添加与变量管理,可通过find_package链接OpenCV等外部库,推荐使用独立构建目录和编译类型控制,逐步掌握高级功能以应对复杂项目。

c++ cmake的基本用法怎么写_c++ cmake使用教程

CMake 是一个跨平台的构建系统生成器,广泛用于 C++ 项目中。它不直接编译代码,而是根据 CMakeLists.txt 文件生成 Makefile 或其他构建系统(如 Ninja、Visual Studio 项目),再通过这些工具完成编译。下面是一个实用的 C++ CMake 使用教程,帮助你快速上手。

1. 基本项目结构

一个典型的简单 C++ 项目结构如下:

my_project/├── CMakeLists.txt├── main.cpp

在 main.cpp 中写一个简单的程序:

#include int main() {    std::cout << "Hello, CMake!" << std::endl;    return 0;}

2. 编写 CMakeLists.txt

在项目根目录创建 CMakeLists.txt,内容如下:

cmake_minimum_required(VERSION 3.10)project(MyApp)

set(CMAKE_CXX_STANDARD 14)

立即学习“C++免费学习笔记(深入)”;

add_executable(myapp main.cpp)

cmake_minimum_required:指定所需最低 CMake 版本。project:定义项目名称,可选语言默认为 C 和 C++。set(CMAKE_CXX_STANDARD 14):设置 C++ 标准为 C++14,也可设为 17 或 20。add_executable:定义一个可执行文件 myapp,由 main.cpp 编译生成。

3. 构建项目

使用命令行进行构建(推荐在单独的构建目录中进行,避免污染源码):

mkdir buildcd buildcmake ..make

mkdir build:创建构建目录。cmake ..:在 build 目录中运行 cmake,读取上级目录的 CMakeLists.txt 并生成 Makefile。make:调用 make 编译生成可执行文件。

完成后,在 build 目录下会生成可执行文件 myapp,运行它:

./myapp# 输出: Hello, CMake!

4. 添加多个源文件

如果项目有多个 .cpp 文件,比如:

my_project/├── CMakeLists.txt├── main.cpp├── hello.cpp├── hello.h

在 CMakeLists.txt 中可以这样写:

cmake_minimum_required(VERSION 3.10)project(MyApp)

set(CMAKE_CXX_STANDARD 14)

立即学习“C++免费学习笔记(深入)”;

add_executable(myapp main.cpp hello.cpp)

也可以用变量简化:

set(SOURCES    main.cpp    hello.cpp)

add_executable(myapp ${SOURCES})

5. 链接外部库(以 OpenCV 为例)

如果你的项目依赖第三方库,比如 OpenCV,可以这样配置:

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(myapp main.cpp)target_link_libraries(myapp ${OpenCV_LIBS})

find_package:查找已安装的 OpenCV 包。include_directories:添加头文件搜索路径。target_link_libraries:将库链接到目标可执行文件。

确保系统中已安装 OpenCV,并配置好 CMake 的查找路径。

6. 常见技巧与建议

始终使用独立的构建目录,避免生成文件混入源码。使用 target_compile_features 指定编译特性,比全局 set 更精确。对于大型项目,使用 add_subdirectory 组织多个模块。调试构建时可用 cmake -DCMAKE_BUILD_TYPE=Debug ..。发布版本使用 Release 模式优化:-DCMAKE_BUILD_TYPE=Release。

基本上就这些。CMake 功能强大,但初学者掌握以上内容就能应对大多数 C++ 项目构建需求。随着项目变复杂,可以逐步学习函数、宏、自定义命令等高级功能。

以上就是c++++ cmake的基本用法怎么写_c++ cmake使用教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1479490.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
c++如何使用正则表达式进行文本匹配 _c++正则表达式匹配方法
上一篇 2025年12月19日 03:49:49
c++中类的成员变量在内存中是如何布局的_c++类成员变量内存布局解析
下一篇 2025年12月19日 03:50:11

相关推荐

  • PS打造闪亮塑料字效果

    PS打造闪亮塑料字效果PS打造闪亮塑料字效果PS打造闪亮塑料字效果PS打造闪亮塑料字效果

    启动Photoshop 5,新建一个文档,并将前景色设定为蓝色(RGB:26,104,175)。使用文字工具在画布中央输入所需的文字内容,作为后续效果的基础图层。 按住Ctrl键,点击图层面板中文字图层的缩略图,载入文字选区。接着创建一个新图层,进入“选择-修改-收缩”命令,在弹出的对话框中输入16…

    2026年9月30日 • 用户投稿
    100
  • windows怎么显示隐藏文件_显示隐藏文件设置方法

    windows怎么显示隐藏文件_显示隐藏文件设置方法windows怎么显示隐藏文件_显示隐藏文件设置方法windows怎么显示隐藏文件_显示隐藏文件设置方法windows怎么显示隐藏文件_显示隐藏文件设置方法

    首先通过文件资源管理器勾选“隐藏的项目”可快速显示隐藏文件;其次在控制面板中修改文件夹选项并取消“隐藏受保护的操作系统文件”能彻底显示系统级隐藏内容;最后可通过管理员权限运行命令提示符执行attrib命令批量取消隐藏属性,实现全面查看。 如果您在使用Windows系统时无法看到某些文件或文件夹,可能…

    2026年9月30日 • 用户投稿
    000
  • 生存攀登游戏《孤山独影》推出无保护独攀模式

    生存攀登游戏《孤山独影》推出无保护独攀模式生存攀登游戏《孤山独影》推出无保护独攀模式生存攀登游戏《孤山独影》推出无保护独攀模式生存攀登游戏《孤山独影》推出无保护独攀模式

    2025年8月20日,在今日举行的未来游戏展上,游戏开发商the game bakers通过一支全新预告片,正式揭晓了其备受期待的生存攀登游戏《孤山独影》的全新挑战模式——无保护独攀模式。 顾名思义,该模式将移除所有岩钉与绳索等保护装备,玩家必须徒手攀爬。一旦失手坠落,角色将立即死亡,且进度清零,必…

    2026年9月30日 • 用户投稿
    100
  • java代码怎样实现哈希表及解决哈希冲突 java代码哈希表结构的实用实现技巧​

    java代码怎样实现哈希表及解决哈希冲突 java代码哈希表结构的实用实现技巧​java代码怎样实现哈希表及解决哈希冲突 java代码哈希表结构的实用实现技巧​java代码怎样实现哈希表及解决哈希冲突 java代码哈希表结构的实用实现技巧​java代码怎样实现哈希表及解决哈希冲突 java代码哈希表结构的实用实现技巧​

    解决哈希冲突的主要方法是链地址法和开放寻址法;2. 链地址法使用链表存储冲突的键值对,开放寻址法通过线性探测、二次探测或双重哈希寻找空位;3. 哈希函数应具备快速计算、均匀分布和抗碰撞性,可基于质数优化;4. 性能优化包括选用合适哈希函数、冲突处理方式、动态扩容以控制负载因子,并在冲突严重时采用红黑…

    2026年9月30日 • 用户投稿
    000
  • 如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构

    如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构如何从损坏的RAID阵列恢复数据?通过RAID重建工具修复阵列结构

    RAID阵列因磁盘故障或配置丢失导致无法访问时,数据仍可能恢复。首先可使用R-Studio等专业软件扫描磁盘,自动推断RAID级别、条带大小和磁盘顺序,构建虚拟阵列提取数据;若已知部分配置信息,可通过手动设置参数提高重建准确性;对于Linux软RAID,可用dd命令备份磁盘后,结合mdadm工具在相…

    2026年9月30日 • 用户投稿
    100
  • Java面向对象高级之多态与接口_Java实现面向对象编程的核心概念

    Java面向对象高级之多态与接口_Java实现面向对象编程的核心概念Java面向对象高级之多态与接口_Java实现面向对象编程的核心概念Java面向对象高级之多态与接口_Java实现面向对象编程的核心概念Java面向对象高级之多态与接口_Java实现面向对象编程的核心概念

    多态和接口是Java面向对象编程的核心,多态实现“一个接口,多种实现”,提升代码灵活性与扩展性;接口定义行为规范,支持多重能力,促进解耦与抽象;二者协同支持开闭原则,增强系统健壮性与可测试性,是构建高质量Java应用的设计基石。 多态和接口,在我看来,它们是Java面向对象编程(OOP)真正发挥其威…

    2026年9月30日 • 用户投稿
    000
  • 天猫华为官方旗舰店是真的吗?天猫华为官网是正品吗

    天猫华为官方旗舰店是真的吗?天猫华为官网是正品吗天猫华为官方旗舰店是真的吗?天猫华为官网是正品吗天猫华为官方旗舰店是真的吗?天猫华为官网是正品吗天猫华为官方旗舰店是真的吗?天猫华为官网是正品吗

    首先确认天猫店铺为华为官方旗舰店(huaweistore.tmall.com)并有“品牌”黑标,再核对手机包装、机身、系统三处IMEI码一致,通过“我的华为”APP查验电子三包凭证激活日期正常,最后在华为官网和工信部网站验证SN码与进网许可信息匹配。 如果您在天猫平台购买华为产品,但对店铺的真伪和商…

    2026年9月30日 • 用户投稿
    000
  • Sublime宏变量使用 Sublime动态宏命令

    Sublime宏变量使用 Sublime动态宏命令Sublime宏变量使用 Sublime动态宏命令Sublime宏变量使用 Sublime动态宏命令Sublime宏变量使用 Sublime动态宏命令

    在sublime text中使用宏变量和动态宏命令需借助插件实现。1. 使用宏变量时,可通过sendtext等插件调用外部脚本处理选中文本或剪贴板内容,并将结果返回替换原内容,如批量修改markdown图片链接域名。2. 动态宏命令通过插件根据上下文生成不同命令序列,例如编写python插件分析代码…

    2026年9月30日 • 用户投稿
    000
  • MacBookProApple电脑死机冻结怎么办?内核panic排查指南

    MacBookProApple电脑死机冻结怎么办?内核panic排查指南MacBookProApple电脑死机冻结怎么办?内核panic排查指南MacBookProApple电脑死机冻结怎么办?内核panic排查指南MacBookProApple电脑死机冻结怎么办?内核panic排查指南

    若服务器IP无法解析导致网站无法访问,应先判断MacBook死机类型:局部卡顿、系统冻结或硬件死锁;随后按芯片类型强制重启;再进入安全模式排查软件冲突;接着分析内核Panic日志定位故障源;最后重置SMC与NVRAM恢复硬件正常状态。 如果您尝试访问某个网站,但服务器无法访问,则可能是由于服务器 I…

    2026年9月30日 • 用户投稿
    000
  • 如何在iPhone上简单安装DeepSeek

    如何在iPhone上简单安装DeepSeek如何在iPhone上简单安装DeepSeek如何在iPhone上简单安装DeepSeek如何在iPhone上简单安装DeepSeek

    在iphone上无法直接安装deepseek模型,但可通过api调用使用其功能。1. 使用deepseek提供的api开发ios应用,注册账号并获取api key,在代码中集成api请求逻辑实现文本生成等功能;2. 直接通过iphone浏览器访问deepseek的web界面进行交互;3. 利用已集成…

    2026年9月30日 • 用户投稿
    000
  • Sublime实现文件上传接口模块功能_支持图片文档多类型格式处理

    Sublime实现文件上传接口模块功能_支持图片文档多类型格式处理Sublime实现文件上传接口模块功能_支持图片文档多类型格式处理Sublime实现文件上传接口模块功能_支持图片文档多类型格式处理Sublime实现文件上传接口模块功能_支持图片文档多类型格式处理

    文件上传接口可通过sublime编写后端逻辑实现,关键在于理解流程与格式处理。1. 接口接收文件流并存储,如flask中通过request.files获取文件并保存;2. 支持多类型需检查扩展名、限制大小、安全重命名及返回错误信息;3. 图片可使用pillow库进行压缩预处理;4. 存储策略建议使用…

    2026年9月30日 • 用户投稿
    000
  • 怎么用豆包AI帮我优化CSS选择器 让AI分析并修复样式性能瓶颈的指南

    怎么用豆包AI帮我优化CSS选择器 让AI分析并修复样式性能瓶颈的指南怎么用豆包AI帮我优化CSS选择器 让AI分析并修复样式性能瓶颈的指南怎么用豆包AI帮我优化CSS选择器 让AI分析并修复样式性能瓶颈的指南怎么用豆包AI帮我优化CSS选择器 让AI分析并修复样式性能瓶颈的指南

    豆包ai能有效优化css选择器并提升样式性能。1. 可让ai分析现有选择器结构,去除冗余标签、减少层级嵌套,如将div#main-content > ul li.active a:hover优化为#main-content .active a:hover;2. 识别昂贵选择器如属性选择器和伪类…

    2026年9月30日 • 用户投稿
    100
  • 手机淘宝店如何经营分店?手机淘宝如何做分销商

    手机淘宝店如何经营分店?手机淘宝如何做分销商手机淘宝店如何经营分店?手机淘宝如何做分销商手机淘宝店如何经营分店?手机淘宝如何做分销商手机淘宝店如何经营分店?手机淘宝如何做分销商

    可通过开设分店或发展分销模式扩展手机淘宝业务。1、用不同手机号注册新账号并完成实名认证,开通店铺后设定独立品牌与类目,通过千牛工作台实现多店统一管理;2、企业用户可申请多个子店铺构建品牌矩阵,配置独立运营权限并对接统一ERP系统,实现数据同步与流量互导;3、入驻阿里妈妈成为分销商,完成身份认证后选择…

    2026年9月30日 • 用户投稿
    000
  • windows提示“msvcr110.dll丢失”如何修复 msvcr110.dll丢失的修复方法

    windows提示“msvcr110.dll丢失”如何修复 msvcr110.dll丢失的修复方法windows提示“msvcr110.dll丢失”如何修复 msvcr110.dll丢失的修复方法windows提示“msvcr110.dll丢失”如何修复 msvcr110.dll丢失的修复方法windows提示“msvcr110.dll丢失”如何修复 msvcr110.dll丢失的修复方法

    msvcr110.dll丢失需修复Visual C++ 2012运行库,方法一:重新安装Microsoft Visual C++ 2012 Redistributable;方法二:使用SFC扫描修复系统文件;方法三:通过regsvr32手动注册dll;方法四:从可信源替换并注册dll;方法五:运行D…

    2026年9月30日 • 用户投稿
    100
  • 注册香港AppleID的步骤及注意事项(畅享香港AppleStore的独特优势)

    注册香港AppleID的步骤及注意事项(畅享香港AppleStore的独特优势)注册香港AppleID的步骤及注意事项(畅享香港AppleStore的独特优势)注册香港AppleID的步骤及注意事项(畅享香港AppleStore的独特优势)注册香港AppleID的步骤及注意事项(畅享香港AppleStore的独特优势)

    在全球范围内,apple公司的产品和服务一直备受用户喜爱。注册一个香港appleid将带给用户更多的便利和特权,让我们一起来了解一下注册香港appleid的步骤以及需要注意的事项。 如何注册香港AppleID 如何在苹果设备上使用香港Apple ID许多苹果设备的功能和应用程序都需要 Apple I…

    2026年9月30日 • 用户投稿
    000
  • 手机淘宝花呗在哪里找出来?手机淘宝的花呗在哪里

    手机淘宝花呗在哪里找出来?手机淘宝的花呗在哪里手机淘宝花呗在哪里找出来?手机淘宝的花呗在哪里手机淘宝花呗在哪里找出来?手机淘宝的花呗在哪里手机淘宝花呗在哪里找出来?手机淘宝的花呗在哪里

    首先检查“我的淘宝”页面是否显示花呗入口,若无则通过淘宝搜索“花呗”进入服务卡片,或从支付宝花呗页面反向引导恢复入口,同时确保淘宝APP已更新至最新版本并手动启用花呗组件。 如果您在使用手机淘宝时发现无法找到花呗入口,可能是由于应用界面更新或功能模块调整导致。以下是恢复和查找花呗入口的详细步骤: 本…

    2026年9月30日 • 用户投稿
    000
  • 怎么用豆包AI帮我生成Shell脚本 5步让AI写出高效运维命令

    怎么用豆包AI帮我生成Shell脚本 5步让AI写出高效运维命令怎么用豆包AI帮我生成Shell脚本 5步让AI写出高效运维命令怎么用豆包AI帮我生成Shell脚本 5步让AI写出高效运维命令怎么用豆包AI帮我生成Shell脚本 5步让AI写出高效运维命令

    使用豆包ai写shell脚本的关键在于明确任务目标、提供环境信息、加入错误处理和日志记录、要求解释原理、通过多轮对话优化内容。1. 明确任务目标,如删除/var/log下超过7天的日志并记录操作日志;2. 提供环境信息,包括shell类型、操作系统版本和权限需求;3. 要求加入目录存在性检查、命令失…

    2026年9月30日 • 用户投稿
    100
  • Windows 系统安装进度卡在 99% 不动,是什么原因?

    Windows 系统安装进度卡在 99% 不动,是什么原因?Windows 系统安装进度卡在 99% 不动,是什么原因?Windows 系统安装进度卡在 99% 不动,是什么原因?Windows 系统安装进度卡在 99% 不动,是什么原因?

    Windows安装卡在99%通常因磁盘I/O瓶颈、驱动冲突或安装介质问题导致,需逐步排查硬件兼容性与系统文件完整性。 Windows系统安装进度卡在99%不动,通常不是真的“卡死”,而是在进行一些耗时但又缺乏明确进度反馈的关键操作,比如驱动安装、组件配置、文件校验或最后的系统优化。这背后可能隐藏着多…

    2026年9月30日 • 用户投稿
    000
  • 曝苹果一大波新技术即将上线 iPhone 17 系列只是开始!

    近日,苹果全新推出的 iPhone 17 系列在市场上展现出强劲势头,销售数据持续攀升,备受消费者青睐。 9 月 28 日,据 CNMO 观察,知名数码博主“数码闲聊站”透露,在 iPhone 17 初步获得市场认可后,苹果供应链将迎来一波技术升级潮,多项前沿技术即将落地应用。其中包括折叠屏设备的研…

    2026年9月30日
    100
  • 如何使用Win10系统安装光盘安装系统_Win10光盘安装方法

    首先确保使用可启动的Windows 10安装光盘并备份数据,接着进入BIOS将光驱设为第一启动项,最后通过光盘引导完成系统安装。 如果您尝试通过物理光盘为电脑安装Windows 10操作系统,但系统未自动启动安装程序,则可能是由于启动顺序未正确配置或安装介质未被识别。以下是完成此操作的步骤: 本文运…

    2026年9月30日
    100

发表回复

登录后才能评论
关注微信