CMake add_subdirectory

文章目录

  • 简介
    • 基本语法
  • 举例
    • 目录结构
    • 根目录CMakeLists
    • 子目录CMakeLists

简介

add_subdirectory 是 CMake 命令之一,用于在当前 CMakeLists.txt 文件中引入另一个子目录的 CMake 构建。这样,你可以在一个项目中组织多个子项目或子模块的构建。

基本语法

基本的语法是:

add_subdirectory(path/to/another_directory)

这里的 path/to/another_directory 是要包含的子目录的路径。这个命令会让 CMake 去处理指定路径下的 CMakeLists.txt 文件,以构建和配置该子目录的内容。

举例

目录结构

project_root/
|-- CMakeLists.txt
|-- src/
|   |-- main.cpp
|-- include/
|   |-- my_library/
|       |-- header1.h
|-- subproject/
|   |-- CMakeLists.txt
|   |-- sub_main.cpp

根目录CMakeLists

project_root/CMakeLists.txt 中,可以使用 add_subdirectory 引入 subproject

# project_root/CMakeLists.txt# 指定项目名称
project(YourProjectName)# 创建你的目标
add_executable(your_target_name src/main.cpp)# 引入子目录
add_subdirectory(subproject)# 链接到子目录中的目标(如果有的话)
target_link_libraries(your_target_name PRIVATE subproject_target)

子目录CMakeLists

subproject/CMakeLists.txt 中,你可以定义和构建子目录的内容:

# subproject/CMakeLists.txt# 子目录中的项目
add_library(subproject_target sub_main.cpp)# 设置子目录的头文件目录
target_include_directories(subproject_target PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include)

在这个例子中,add_subdirectory 用于将 subproject 目录引入到 project_root 的构建中。

这样,你就可以在一个项目中管理多个子项目或模块,并且它们之间可以共享头文件和库。

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

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

相关文章

lua完整学习笔记

lua注释 -- 单行注释 --[[ 多行注释 ]]-- lua数据结构 nil 无效值与Java的Null类似,但是在条件表示中是false boolean 布尔值,ture或者false number 双精度类型的浮点数 string 字…

【Android知识笔记】性能优化专题(四)

App 线程优化 线程调度原理 任意时刻,只有一个线程占用CPU,处于运行状态多线程并发:轮流获取CPU使用权JVM负责线程调度:按照特定机制分配CPU使用权线程调度模型 分时调度模型:轮流获取、均分CPU时间抢占式调度模型:优先级高的获取,JVM采用Android线程调度 nice值:Proc…

.NET6实现破解Modbus poll点表配置文件

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 Modbus 协议是工控领域常见…

11. Mysql 子查询

Mysql 函数参考和扩展&#xff1a;Mysql 常用函数和基础查询、 Mysql 官网 Mysql 语法执行顺序如下&#xff0c;一定要清楚&#xff01;&#xff01;&#xff01;运算符相关&#xff0c;可前往 Mysql 基础语法和执行顺序扩展。 (8) select (9) distinct (11)<columns_name…

beanFactory和Factorybean有啥区别

BeanFactory和FactoryBean是Spring框架中的两个重要概念&#xff0c;它们有一些区别和不同的用途。 BeanFactory&#xff1a; BeanFactory是Spring框架的核心接口&#xff0c;它是一个工厂模式的实现。它负责创建、管理和获取应用程序中的各种对象&#xff08;也称为bean&#…

C语言线性表的实现(详解)

数据结构之线性表 ​ 线性表的基本概念&#xff1a;线性表是由0个或者多个数据元素的有限序列 ​ 特性是&#xff1a; ​ 1&#xff1a;数据元素之间都是有顺序的 ​ 2&#xff1a;数据元素的个数是有限的&#xff0c; ​ 3&#xff1a;数据元素的类型是相同的 ​ 性质是&…

mysql数据库基础知识,Mysql的索引和主键区别,数据库的事务的基本特性

文章目录 数据库基础知识Mysql的索引和主键的区别数据库的事务的基本特性 数据库基础知识 为什么要使用数据库 数据保存在内存 优点&#xff1a; 存取速度快 缺点&#xff1a; 数据不能永久保存 数据保存在文件 优点&#xff1a; 数据永久保存 缺点&#xff1a;1&#xf…

.net面试题5

1.请解释一下C#中的接口&#xff08;Interface&#xff09;。 接口是一种定义了一组方法、属性、事件或索引器的合同&#xff08;Contract&#xff09;&#xff0c;它只包含成员的声明而不包含实现。接口定义了一种行为规范&#xff0c;类可以实现一个或多个接口来满足其约定。…

Java中数据库查询方法MapListProcessor的应用

1.供应链系统的销售合同捉过了两个金额一样的&#xff0c;同一个项目 2.合同号也一样&#xff0c;oaid不一样&#xff0c;但是从OA前台只有一个 3.一个是建云的一个是泛微的 4.做下过滤&#xff0c;如果同一个合同编号&#xff0c;在泛微里面有的&#xff0c;建云的就不获取了 …

WPF面试题高级篇

WPF高级篇[8] 32. 解释SelectedItem、SelectedValue和SelectedValuePath之间的区别&#xff1f; 在WPF中&#xff0c;SelectedItem、SelectedValue和SelectedValuePath是用于处理选择控件&#xff08;如ComboBox、ListBox等&#xff09;中选定项的属性和路径。 比如当使用选…

一维数组传参的本质

一维数组传参的本质 数组我们之前学过了&#xff0c;之前也讲了&#xff0c;数组是可以传递给函数的&#xff0c;这个小节我们讨论一下数组传参的本质。 首先&#xff0c;我们从一个问题开始&#xff0c;我们之前都是在函数外部计算数组的元素个数&#xff0c;那我们可以把函…

threejs下监听mesh事件与监听3D对象的区别

先说结论 监听mesh时会导致同一mesh下同一个位置&#xff0c;如果重叠着多个3D对象&#xff0c;点击事件会被触发多次。而监听3D对象只有这个对象会触发这个事件一次。 技术架构 reactthreejsreact-three/dreireact-three/fiber 场景 有这样一段代码&#xff0c;一个网格对…

Git安装

简单粗暴&#xff0c;跟着步骤一步一步来 右键就会有了

Rust内存布局

题图忘了来自哪里.. 整型,浮点型,struct,vec!,enum 本文是对 Rust内存布局 的学习与记录 struct A { a: i64, b: u64,}struct B { a: i32, b: u64,}struct C { a: i64, b: u64, c: i32,}struct D { a: i32, b: u64, c: i32, d: u64,}fn main(…

优思学院|如何在企业中实施降本增效策略,实现财务突破

在当今竞争激烈的商业环境中&#xff0c;企业降低成本并提高效益变得至关重要。本文将深入探讨如何降本增效&#xff0c;以及实施这些策略的方法。 提到降本增效或提升生产效率&#xff0c;第一个被提出来检讨的一定是直接部门。但是如果无视于日渐臃肿的间接部门&#xff0c;…

[AWS 考证]CSDN官方课程目录

一、亚马逊云科技简介 二、在云中计算 三、全球基础设施和可靠性 四、联网 五、存储和数据库 六、安全性 七、监控和分析 八、定价和支持 九、迁移和创新 十、云之旅 关注订阅号 CSDN 官方中文视频&#xff08;免费&#xff09;&#xff1a;点击进入 一、亚马逊云科…

TS 函数及多态

TS 能推导出函数体中的类型&#xff0c;但多数情况下无法推导出参数的类型&#xff0c;只有少数特殊情况下能根据上下文推导参数的类型。返回类型能推导出&#xff0c;不过也可以显式注解。 1 声明和调用函数 一般来说&#xff0c;在方法中的this值为调用该方法时位于点号左侧…

用python自行开发的流星监控系统meteor_monitor(第二篇)

代码&#xff1a; GitHub - xingxinghuo1000/meteor_monitor_scripts 本篇为最新代码的方案介绍和使用介绍。第一篇已经过时了&#xff0c;不建议看 。只看这一篇即可。 背景 著名的流星监控软件ufocapturehd2有几个缺陷&#xff0c;不能忍 1、吃性能&#xff0c;我的工控电脑…

大模型下交互式数据挖掘的探索与发现

在这个数据驱动的时代&#xff0c;数据挖掘已成为解锁信息宝库的关键。过去&#xff0c;我们依赖传统的拖拉拽方式来建模&#xff0c;这种方式在早期的数据探索中起到了作用&#xff0c;但随着数据量的激增和需求的多样化&#xff0c;它的局限性逐渐显露。 >>>> 首…

App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法

​ 引言 在iOS应用程序开发过程中&#xff0c;进行App备案并获取公钥及证书SHA-1指纹是至关重要的步骤。本文将介绍如何通过appuploader工具获取iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹&#xff0c;帮助开发者更好地理解和应用该过程。 正文 iOS应用程序…