简单的小型C++项目怎么用CMAKE进行管理

news2024/9/21 4:36:27

项目目录:

在这里插入图片描述
在这里插入图片描述
根目录下共有两个文件夹,分别为include、src,有两个文件,分别为CMakeLists.txt和main.cpp

main函数

在这里插入图片描述
可以看出,include了func.h,且func.h的声明在include文件夹下,定义在src文件夹下的func.cpp中

src文件夹下的CMakeLists.txt

在这里插入图片描述
add_library表示创建了一个静态库,名字是func,用的是func.cpp这个文件
target_include_directories表示让../include文件夹成为func库的头文件的默认搜索的文件夹,且PUBLIC表示让这个目录添加到func目标的接口中,这样任何使用func目标的其他目标都可以访问这个目录,这对于构建复杂的项目时非常有用。

具体到这个例子来说,就是在根目录下的CMakeLists.txt在build的时候,能够访问这个目录

根目录下的CMakeLists.txt

在这里插入图片描述

add_subdirectory(src) 的作用是向 CMake 告知该项目的源代码位于名为 src 的子目录中。当执行 cmake 命令时,CMake 会检查项目根目录下的 CMakeLists.txt 文件,并执行其中的指令。如果其中包含了 add_subdirectory 指令,那么 CMake 会在指定的目录下寻找另一个 CMakeLists.txt 文件,并执行其中的指令。通过这种方式,我们可以将一个大型项目拆分成多个子目录,并为每个子目录单独编写 CMakeLists.txt 文件,从而更加灵活和方便地管理项目。

target_link_libraries(untitled33 func) 是 CMake 中用于将目标库链接到可执行文件的指令。

在本例中,untitled33 是一个可执行文件的名称,func 是一个目标库的名称。使用 target_link_libraries 指令,我们告知 CMake 将目标库 func 链接到可执行文件 untitled33 中。这样,当我们执行 untitled33 可执行文件时,操作系统会自动加载并运行 func 目标库中的函数或代码,从而实现所需的功能。

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

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

相关文章

全网唯一!Matlab世界顶尖艺术品配色包Rmetbrewer

想要绘制一幅颜色搭配合理、好看又不花哨的论文插图,该如何操作呢? 正所谓求其上者得其中,求其中者得其下。 那么,向高手借鉴思路,无疑是一种不落下乘的好策略。 而在色彩搭配领域,像莫奈、梵高这些世界…

WPS表格数据出现绿色小三角,单引号,E+的原因说明和完美解决方案,终结版。

复盘问题的原因,了解原因的原因,预测事件的结果,推测结果产生的结果。 问题描述:好好的数据,复制进wps,左上角就会出现绿色三角。怎么去掉呢? 迷惑问题2:点击之后,绿色三…

代码优化- 前端优化

常量折叠 基本思想:在编译期间计算表达式的值(编译时静态计算) 例如:a 3 5 > a 8,if (true && false) ... > if (false) 好处是:语法树的节点数量减少了,意味着编译器要维护…

STM32—0.96寸OLED液晶显示

本文主要介绍基于STM32F103的0.96寸的OLED液晶显示,详细关于0.96寸OLED液晶屏幕的介绍可参考这篇博客:https://blog.csdn.net/u011816009/article/details/130119426 一、简介 OLED被称为有机激光二极管,也被称为有机激光显示,O…

学生宿舍管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87700423 更多系统资源库…

Sprinboot聚合项目归荑

1、前言 在创建springboot项目时,都会有一个Main方法。如果将Springboot项目设计成聚合项目时,我们是不是要把所有的子项目都按照Springboot的方式创建呢?如果是会出现什么问题,以及我们怎么解决呢? 如果我们使用maven…

ChatGPT原理详解+实操

言 ChatGPT已近火了快大半年了,从去年刚出来的时候小编就关注了一下,也具体的使用过,然后就惊为天人,再然后就没有然后了,因为小编那段时间沉迷于AIGC了。ChatGPT今年开年后更是火的一塌糊涂,无论是行业内…

chatgpt智能提效职场办公-ppt怎么加音乐背景

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 在 PowerPoint 中,您可以轻松地将音乐作为背景音乐添加到您的演示文稿中。下面是步骤: 打开您的 PowerPoint 演…

【大厂直通车】哔哩哔哩日常实习_测开面经

📑哈喽,大家好,我是小浪;本篇博客更新的是最新B站测开面经,本专栏非常适合目前准备找实习,或者准备冲秋招测试,测开方向的同学阅读订阅,持续更新各大厂真题面经,带你成为offer收割机!! 🧃对于订阅本专栏的同学们,博主在努力更新,只需要一杯奶茶钱,订阅本专栏,…

【命名空间】using namespace std是什么意思?

目录 一、前言二、命名空间2.1命名空间的定义2.2命名空间的成员调用2.2.1加命名空间名称及作用域限定符2.2.2使用using将命名空间中某个成员引入2.2.3使用using namespace 命名空间名称 引入 2.3命名空间的成员的优先级 三、using namespace std 一、前言 我们很多接触过C编程…

考了华为认证,如何找工作?能进哪些公司?有没有前景?

哪些人适合考华为?考了华为认证好不好找工作?这应该是困扰很多网工的问题。 俗话说,男怕入错行,女怕嫁错郎。如何选择一条适合自己的道路,提前做好职业规划,对个人职业发展至关重要。 下面就为大家整理了…

C#基础学习--预处理指令

目录 什么是预处理指令 基本规则 #define 和 #undef 指令 条件编译 条件编译结构 诊断指令 行号指令 ​编辑 区域指令 #pragam warning 指令 什么是预处理指令 源代码指定了程序的定义,预处理指令指示编译器如何处理源代码 基本规则 #define 和 #undef 指令…

基于uniapp+vue微信小程序的在职考研学习辅导系统

1系统具有良好的集成性,提供标准接口,以实现与其他相关系统的功能和数据集成。开放性好,便于系统的升级维护、以及与各种信息系统进行集成。功能定位充分考虑平台服务对象的需求。 一个微信小程序由.js、.json、.wxml、.wxss四种文件构成&…

CSS学习(4) - 链接,列表和表格

文章首发于我的个人博客:欢迎大佬们来逛逛 文章目录 CSS链接CSS列表CSS表格 CSS链接 链接样式,通过 color font-family background 等来设置: a{color: hotpink;font-size: 30px; }可以指定不同的链接时刻来指定不同的样式: l…

Python中随机梯度下降法

随机梯度下降法 批量梯度下降使用全部的训练样本来计算梯度,并更新模型参数,因此它的每一次迭代计算量较大,但对于凸优化问题,可以保证每次迭代都朝着全局最优解的方向前进,收敛速度较快,最终收敛到的结果…

synchronized原理:

vm中每个对象都会有一个监视器Monitor,监视器和对象一起创建、销毁。监视器相当于一个用来监视这些线程进入的特殊房间,其义务是保证(同一时间)只有一个线程可以访问被保护的临界区代码块。每一个锁都对应一个monitor对象&#xf…

如何训练自己的大型语言模型

如何使用 Databricks、Hugging Face 和 MosaicML 训练大型语言模型 (LLM) 介绍 大型语言模型,如 OpenAI 的 GPT-4 或谷歌的 PaLM,已经席卷了人工智能世界。然而,大多数公司目前没有能力训练这些模型,并且完全依赖少数大型科技公司…

LaoCat带你认识容器与镜像之Docker网络

近期比较忙,心思也比较乱,难得今天休息,闲来无事,借机更新一下系列 ~ 系列目录 LaoCat带你认识容器与镜像(一) LaoCat带你认识容器与镜像(二【一章】) LaoCat带你认识容器与镜像&…

软件安全性与隐私保护的最佳实践

在当今数字化时代,随着软件使用的普及和信息技术的发展,软件安全性和隐私保护越来越成为了IT领域关注的热点问题。在此,本文将探讨软件安全性和隐私保护的最佳实践,以帮助大家更好地保护自己的信息安全。 一、软件安全性最佳实践…

数据结构与算法八 优先队列

一 优先队列 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有优先级…