CMake入门教程【核心篇】添加文件(aux_source_directory)

在这里插入图片描述

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


文章目录

  • 1.概述
  • 2.使用方法
  • 3.完整代码示例
  • 4.实战使用技巧
  • 5.注意事项
  • 6.总结

1.概述

CMake的aux_source_directory命令用于自动收集指定目录下的源文件。这个命令可以减少手动添加每个源文件的工作量,特别是在有大量源文件的项目中。

2.使用方法

基本语法:

aux_source_directory(<dir> <variable>)
  • <dir>: 指定要搜索的目录。
  • <variable>: 用于存储找到的源文件列表的变量。

3.完整代码示例

考虑一个项目结构,其中src目录包含所有源文件:

cssCopy codeMyProject/
├── CMakeLists.txt
└── src/
    ├── main.cpp
    ├── utility.cpp
    └── helper.cpp

CMakeLists.txt文件中,使用aux_source_directory来收集src目录下的所有源文件:

cmake_minimum_required(VERSION 3.10)
project(MyProject)

aux_source_directory(src SOURCES)

add_executable(MyExecutable ${SOURCES})

这里,SOURCES变量将包含src目录下所有的.cpp文件。

4.实战使用技巧

  1. 结合file(GLOB)使用: aux_source_directory只搜索指定目录下的源文件。结合file(GLOB)可以递归地搜索子目录。
  2. 源文件管理: 对于较小的项目或明确知道源文件不会频繁变动的情况,使用aux_source_directory是合适的。但在源文件经常变动的大型项目中,手动指定源文件可能更加可控。
开始CMake配置
使用aux_source_directory
指定目录和变量
小型或结构稳定的项目
大型或频繁变动的项目
自动收集源文件
手动指定源文件
添加源文件到目标
完成CMake配置

5.注意事项

  • aux_source_directory不会递归搜索子目录。
  • 某些生成的或不需要编译的文件可能也会被包括进来,需要手动排除。
  • 项目结构的任何更改(如添加或删除源文件)需要重新运行CMake以更新构建系统。

6.总结

aux_source_directory是一个方便的命令,用于自动收集目录中的源文件。它适用于源文件结构相对固定的项目,但在源文件频繁变化的大型项目中,可能需要更精细的源文件管理策略。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

技术资讯:Vue 3.4 新版本发布,1分钟快速看看改了啥!

大家好&#xff0c;我是大澈&#xff01; 本文约1000字&#xff0c;整篇阅读大约需要1分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…

Node.js本地搭建简单页面小游戏

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

《JSR303参数校验》

一、基础概述 1.简介 Java API 规范 (JSR303) 定义了 Bean 校验的标准 validation-api&#xff0c;但没有提供实现。hibernate validation 是对这个规范的实现&#xff0c;并增加了校验注解如 Email、Length 等。Spring Validation 是对 hibernate validation 的二次封装&…

用邮件及时获取变更的公网IP--------python爬虫+打包成exe文件

参考获取PC机公网IP并发送至邮箱 零、找一个发送邮件的邮箱 本文用QQ邮箱为发送邮箱&#xff0c;网易等邮箱一般也有这个功能&#xff0c;代码也是通用的。 第一步&#xff1a;在设置中找到账户&#xff0c;找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务&#xff0c;点击获…

基于springboot+vue零食商城管理系统

摘要 基于Spring Boot Vue的零食商城管理系统是一项集成了先进技术的电商解决方案。此系统以Spring Boot为后端框架&#xff0c;结合Vue.js构建前端&#xff0c;致力于实现零食商城的高效管理和用户友好的界面体验。首先&#xff0c;Spring Boot框架作为后端核心&#xff0c;为…

12月,全国各地电子签推广应用政策汇总

12月&#xff0c;国务院及各地政府办公厅、市监局、住建委等机关部门&#xff0c;持续推动电子印章、电子合同等功能在“政府采购、工程项目审批、企业开办等”领域深化应用&#xff0c;加快实现电子签章互信互认&#xff0c;不断简化办事流程&#xff0c;让越来越多高频常办事…

2_并发编程同步锁(synchronized)

并发编程带来的安全性同步锁(synchronized) 1.他的背景 当多个线程同时访问&#xff0c;公共共享资源的时候&#xff0c;这时候就会出现线程安全&#xff0c;代码如&#xff1a; public class AtomicDemo {int i0;//排他锁、互斥锁public void incr(){ //synchronizedi; …

动手学深度学习一:环境安装与数据学习

2024&#xff0c;重新开始深度学习。 第一步&#xff1a;李沐动手学深度学习 课程网址&#xff1a;https://courses.d2l.ai/zh-v2/ 包含教材和视频网址链接 Jupyter notebook安装 目前在本地先使用cpu版本pytorch&#xff0c;我的本地已经安装好conda&#xff0c;跟着教材创建…

Vue 中的 ref 与 reactive:让你的应用更具响应性(中)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Spring高手之路-Spring中Bean的五大作用域

目录 Singleton&#xff08;单例&#xff09;&#xff1a;默认的作用域 Prototype&#xff08;原型&#xff09; Request&#xff08;请求&#xff09; Session&#xff08;会话&#xff09; Global Session&#xff08;全局会话&#xff09; 五大作用域范围对比 作用域…

Jenkins持续集成(下篇)

&#xff08;四&#xff09;Jenkins 配置构建执行状态 运行构建 在项目 左侧列表点击 “立即构建” &#xff0c;在 “Build History” 列表&#xff0c;你会得到一个红色的小圆点&#xff0c;表示构建失败。 点击 构建失败的任务&#xff08;红色的小圆点&#xff09;。然后点…

Python用selenium实现自动登录和下单的项目实战

前言 学python对selenium应该不陌生吧 Selenium 是最广泛使用的开源 Web UI&#xff08;用户界面&#xff09;自动化测试套件之一。Selenium 支持的语言包括C#&#xff0c;Java&#xff0c;Perl&#xff0c;PHP&#xff0c;Python 和 Ruby。目前&#xff0c;Selenium Web 驱动…

Java 语言概述

Java 概述 是 SUN&#xff08;Stanford University Network&#xff0c;斯坦福大学网络公司&#xff09;1995年推出的一门高级编程语言 是一种面向 Internet 的编程语言。Java 一开始富有吸引力是因为 Java 程序可以在 Web 浏览器中运行。这些 Java 程序被称为 Java 小程序&am…

专题一_双指针(一)

文章目录 283.移动零题目解析讲解算法原理扩展编写代码 1089.复习零题目解析讲解算法原理编写代码 202.快乐数题目解析讲解算法原理证明编写代码 11.盛最多水的容器题目解析讲解算法原理暴力解法优秀的解法时间复杂度分析 编写代码 283.移动零 题目链接 题目解析 题目还是比较…

成为一名合格的前端架构师,前端知识技能与项目实战教学

一、教程描述 本套前端架构师教程&#xff0c;大小35.94G&#xff0c;共有672个文件。 二、教程目录 01.node介绍和环境配置&#xff08;共6课时&#xff09; 02.ES6语法&#xff08;共5课时&#xff09; 03.node基础&#xff08;共29课时&#xff09; 04.Express框架&am…

大数据Doris(四十九):Doris数据导出介绍

文章目录 Doris数据导出介绍 一、​​​​​​​使用示例

Hive生产调优介绍

1.Fetch抓取 Fetch抓取是指&#xff0c;Hive中对某些情况的查询可以不必使用MapReduce计算。例如&#xff1a;SELECT * FROM employees;在这种情况下&#xff0c;Hive可以简单地读取employee对应的存储目录下的文件&#xff0c;然后输出查询结果到控制台。 在hive-default.xml…

SpingBoot的项目实战--模拟电商【4.订单及订单详情的生成】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.功能需求 二.代码编写 …

2023最大技术潮:大模型冲击下的智能汽车

作者 |德新 编辑 |王博 过去这年最大的技术潮&#xff0c;非大模型莫属。 2023年初&#xff0c;由ChatGPT掀起的浪花&#xff0c;迅速地演变成了席卷全球的AI科技浪潮。汽车行业在其中也不可避免。各大车企纷纷投入与大模型相关的布局。 长城官宣成立了AI Lab&#xff0c;到…

Python从入门到精通之元类

系列 Python从入门到精通之安装与快速入门-CSDN博客 Python从入门到精通之基本数据类型和变量-CSDN博客 Python从入门到精通之集合&#xff08;List列表、Tuple元组、Dict字典、Set&#xff09;-CSDN博客 Python从入门到精通之条件语句、循环语句和函数-CSDN博客 Python从…