CMake入门教程【核心篇】添加应用程序(add_executable)

news2024/9/21 4:20:26

在这里插入图片描述

😈「CSDN主页」:传送门
😈「Bilibil首页」:传送门
😈「本文的内容」:CMake入门教程
😈「动动你的小手」点赞👍收藏⭐️评论📝


文章目录

        • 1. 概述
        • 2. 使用方法
          • 2.1 基本语法
          • 2.2 添加单个源文件
          • 2.3 添加多个源文件
        • 3. 完整代码示例
        • 4. 实战使用技巧
        • 5. 注意事项
        • 6. 总结与分析

开始CMake配置
使用add_executable
指定可执行文件名和源文件
单个源文件
多个源文件
创建可执行目标
设置目标属性
完成CMake配置
1. 概述

add_executable是CMake中用于添加可执行文件的基本命令。该命令将源代码文件编译成可执行程序,是CMake项目中不可或缺的一部分。

2. 使用方法
2.1 基本语法
add_executable(<executable_name> [source1] [source2 ...])
  • <executable_name>: 可执行文件的名称。
  • [source1] [source2 ...]: 源代码文件列表。
2.2 添加单个源文件
add_executable(myApp main.cpp)
2.3 添加多个源文件
add_executable(myApp main.cpp util.cpp util.h)
3. 完整代码示例

以下是一个简单的示例,演示了在CMake项目中如何使用add_executable来创建一个简单的可执行程序。

  • 项目结构

    cssCopy codeMyProject/
    ├── CMakeLists.txt
    └── src/
        ├── main.cpp
        └── util.cpp
    
  • CMakeLists.txt

    cmake_minimum_required(VERSION 3.10)
    project(MyApp)
    
    add_executable(myApp src/main.cpp src/util.cpp)
    
  • src/main.cpp

    #include <iostream>
    #include "util.h"
    
    int main() {
        std::cout << "Hello, CMake!" << std::endl;
        printUtil();
        return 0;
    }
    
  • src/util.cpp

    #include "util.h"
    #include <iostream>
    
    void printUtil() {
        std::cout << "Utility function." << std::endl;
    }
    
4. 实战使用技巧
  • 源文件管理:对于大型项目,使用变量或源文件列表来管理多个源文件。
  • 条件编译:根据不同条件(如平台或配置)添加不同的源文件或定义。
  • 目标属性设置:使用target_*命令设置可执行目标的属性,如target_include_directories设置包含目录。
5. 注意事项
  • 文件路径:确保源文件的路径正确无误。
  • 可执行文件命名:避免与系统命令或其他项目中的可执行文件冲突。
  • 跨平台兼容性:考虑源代码在不同平台上的兼容性。
6. 总结与分析

add_executable命令是CMake项目中构建可执行程序的基石。通过合理使用此命令,可以灵活地管理源代码文件并生成所需的可执行目标。了解和掌握add_executable的使用是每个使用CMake的开发者必备的技能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1354390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机视觉】常用图像数据集

图像数据集 模型需要好的数据才能训练出结果&#xff0c;本文总结了机器学习图像方面常用数据集。 MNIST 机器学习入门的标准数据集&#xff08;Hello World!&#xff09;&#xff0c;10个类别&#xff0c;0-9 手写数字。包含了60,000 张 28x28 的二值训练图像&#xff0c;10…

计算机网络(2)

计算机网络&#xff08;2&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网&#xff08;2&#xff09;分组交换网中的时延、丢包和吞吐量时延丢包吞吐量总结 协议层次及其服务模型模型类型OSI模型分析TCP/IP模型分析 追溯历史 小程一言 我…

Graphics Control

Graphics Control提供了一个易于使用的图形设置管理解决方案,帮助您加快开发。它附带了一个常用设置库,如分辨率、垂直同步、全屏模式、光晕、颗粒、环境光遮挡等。我们的可自定义设置面板UI预制件为您提供了一个可用的UI面板,支持完整的游戏手柄和键盘输入。图形控制还附带…

【前沿技术杂谈:ChatGPT】ChatGPT——热潮背后的反思

【前沿技术杂谈&#xff1a;ChatGPT】ChatGPT——热潮背后的反思 缘起&#xff1a;无中生有&#xff0c;涅槃重生人工智能技术人工智能的发展史无中生有内容自动生成技术的发展代表企业OpenAI-GPT系列技术的发展历程ChatGPT新特点 热潮&#xff1a;万众瞩目&#xff0c;群雄逐鹿…

Unity | Shader基础知识番外(向量数学知识速成)

目录 一、向量定义 二、计算向量 三、向量的加法&#xff08;连续行走&#xff09; 四、向量的长度 五、单位向量 六、向量的点积 1 计算 2 作用 七、向量的叉乘 1 承上启下 2 叉乘结论 3 叉乘的计算&#xff08;这里看不懂就百度叉乘计算&#xff09; 八、欢迎收…

Vue3地图选点组件

Vue3地图选点组件 <template><div style"width: 100%; height: 500px"><div class"search-container"><el-autocompletev-model"suggestionKeyWord"class"search-container__input"clearable:fetch-suggestion…

【已解决】You have an error in your SQL syntax

报错讯息 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘desc,target_url,sort,status,create_by,modify_by,created,last_update_time FROM…

图像分割 分水岭法 watershed

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的C#版本请访问&#xff1a;图像分割 分水岭法 watershed&#xff08;C#&#xff09;-CSDN博客 Watershed算法是一种图像处理算…

SSM的校园二手交易平台----计算机毕业设计

项目介绍 本次设计的是一个校园二手交易平台&#xff08;C2C&#xff09;&#xff0c;C2C指个人与个人之间的电子商务&#xff0c;买家可以查看所有卖家发布的商品&#xff0c;并且根据分类进行商品过滤&#xff0c;也可以根据站内搜索引擎进行商品的查询&#xff0c;并且与卖…

XCTF-Misc1 USB键盘流量分析

m0_01 附件是一个USB流量文件 分析 1.键盘流量 USB协议数据部分在Leftover Capture Data域中&#xff0c;数据长度为八个字节&#xff0c;其中键盘击健信息集中在第三个字节中。 usb keyboard映射表&#xff1a;USB协议中HID设备描述符以及键盘按键值对应编码表 2.USB…

苹果手机数据删除怎么恢复?这几个方法值得一试!

不小心删除了iPhone里的照片&#xff1f;别担心&#xff0c;数据恢复是有可能的&#xff01; 从这里&#xff0c;你可以找到你的备份并恢复丢失的数据。如果你没有备份&#xff0c;那么数据恢复软件可能可以帮助你。它们可以扫描你的iPhone或iTunes备份&#xff0c;找到你删除…

05-SpringCloud-RabbitMQ-概述

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&am…

最新-mybatis-plus 3.5分页插件配置

mybatis-plus 3.5分页插件配置 前提 1.项目不是springboot, 是以前的常规spring项目 2.mp 从3.2升级到3.5&#xff0c;升级后发现原本的分页竟然不起作用了&#xff0c;每次查询都是查出所有 前后配置对比 jar包对比 jsqlparser我这里单独引了包&#xff0c;因为版本太低…

鸿蒙系列--装饰器

一、基础UI组件结构 每个UI组件需要定义为Component struct对象&#xff0c;其内部必须包含一个且只能包含一个build(){}函数&#xff0c;用于绘制UI&#xff1b;struct之内、build()函数之外的地方用于存放数据。 二、基本UI装饰器 Entry 装饰struct&#xff0c;页面的入口…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion Cauchy’s Argument Priciple 柯西幅角原理 结论&#xff1a; s s s平面内顺时针画一条闭合曲线 A A A&#xff0c; B B B曲…

极狐GitLab Helm Chart 已上线,玩转云原生极狐GitLab!

极狐GitLab 研发团队提供了极狐GitLab & Runner 的 Helm Chart&#xff0c;方便用户在 Kubernetes 相关环境上来安装和运行极狐GitLab & Runner。Helm Chart 已经上线 Artifact Hub &#xff1a; 使用指南 只需简单两步就可以开启极狐GitLab & Runner Helm Chart …

【Week-P4】CNN猴痘病识别

文章目录 一、环境配置二、准备数据三、搭建网络结构四、开始训练五、查看训练结果六、总结2.3 ⭐torch.utils.data.DataLoader()参数详解6.1 print()常用的三种输出格式6.2 修改网络结构&#xff0c;观察训练结果6.2.1 增加pool2、conv6、bn6&#xff0c;test_accuracy82.5%6.…

postman使用-05新建测试集

文章目录 两种方式新建测试集测试集&#xff1a;允许用户以项目或模块的方式对多个接口进行分类和管理。每一个测试请求都可以被看作是一个独立的测试用例&#xff0c;而collections则可以同时管理多个测试用例的执行。方法一&#xff1a;点击左上角直接创建测试方法二&#xf…

ubuntu 执行apt-get update报错

系统是Ubuntu22.04 执行apt-get update 遇到如下情况 E: 无法下载 https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy/main/binary-arm64/Packages 404 Not Found [IP: 101.6.15.130 443] E: 无法下载 https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy-upda…