首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

可选的add_subdirectory (如find_package)

add_subdirectory是CMake中的一个指令,用于向当前项目添加一个子目录。该指令的语法如下:

add_subdirectory(<子目录名> [二进制输出目录] [EXCLUDE_FROM_ALL])

其中,子目录名是要添加的子目录的路径。二进制输出目录是可选参数,用于指定子目录的构建输出目录。EXCLUDE_FROM_ALL也是可选参数,如果设置为TRUE,则该子目录不会被默认构建。

add_subdirectory指令的作用是将子目录中的CMakeLists.txt文件加入到当前项目的构建过程中,从而实现对子目录中源代码的编译和构建。通过使用add_subdirectory指令,可以将一个大型项目拆分为多个子目录,使得项目结构更加清晰,便于管理和维护。

add_subdirectory指令的优势包括:

  1. 模块化开发:通过将项目拆分为多个子目录,可以实现模块化的开发,每个子目录可以独立开发、测试和维护,提高开发效率。
  2. 代码复用:可以将一些通用的代码封装为一个子目录,供多个项目共享使用,避免重复编写相同的代码。
  3. 构建控制:可以通过设置二进制输出目录和EXCLUDE_FROM_ALL参数,灵活控制子目录的构建行为,满足不同的构建需求。

add_subdirectory指令在各类CMake项目中广泛应用,特别是对于大型项目或者多模块项目,使用add_subdirectory可以更好地组织代码结构和管理构建过程。

腾讯云相关产品中,与CMake相关的产品包括云原生应用平台TKE(Tencent Kubernetes Engine)和云开发平台Serverless Framework。TKE提供了基于Kubernetes的容器编排服务,可以方便地部署和管理容器化的应用程序。Serverless Framework是一个开发框架,可以帮助开发者快速构建和部署无服务器应用。这两个产品可以与CMake结合使用,实现在腾讯云上的持续集成和持续部署。

更多关于TKE的信息,请访问腾讯云官网:https://cloud.tencent.com/product/tke

更多关于Serverless Framework的信息,请访问腾讯云官网:https://cloud.tencent.com/product/sls

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OpenHarmony开源三方库cmake在IDE上直接引用问题

前言DevEco Studionative工程C/C++部分当前只支持cmake脚本编译,工程目录结构如下图所示在工程中引用第三方库有如下三种方式,一、find_package模式通过find_package...,可以在指定目录下去搜索已安装库(三方库构建完后执行install,会生成xxx-config.cmake之类文件在安装目录下),如果可以找到对应库,就可以获取头文件路径以及库路径二、add_subdirectory...DevEco Studionative工程C/C++部分是使用cmake脚本来构建,开源社区上有很多C/C++三方库也是使用cmake来编译构建,这些三方库我们是否可以直接采用add_subdirectory...,如下图所示find_package通过这些文件来获取库版本、库头文件、库名称等信息,假如没有这些文件,find_package将会找不到库。...总结一、部分开源三方库脚本可以在DevEco Studio上直接使用这部分开源三方库没有其他库依赖,可以直接使用add_subdirectory引用二、有依赖三方库脚本不能在DevEco Studio

7910
  • 使用CEF(六)— 解读CEFcmake工程配置

    第一个必填参数name,就是我们要编译可执行程序target名称; 可选参数WIN32、MACOS_BUNDLE。分别用于Windows平台和macOS平台可执行应用程序构建。...可选参数EXCLUDE_FROM_ALL,表明整个项目构建时候,排除当前这个target; 至于source等等就是头文件、源码文件了。...但是没有必要,尽可能使用target_xxx来给指定target配置。举一反三,CMake中还有很多target_开头指令,其目的都是针对某个指定target配置。...关于find_package,网上解析文章很多,这里只简单说明下,CMake官方文档中提到find_package有两种搜索模式,其中一种就是模块搜索模式(Module mode),该搜索模式说明如下...libcef_dll/CMakeLists.txt 现在,让我们回到cef_binary_xxx/CMakeLists.txt,在find_package(CEF)之后,紧接着就是add_subdirectory

    79220

    从零开始编写一个cmake构建脚本

    :工程名需要大写版本号需要标明主版本号,次版本号以及补丁版本号,: project(PROJECT_NAME VERSION 0.0.0) PROJECT_NAME工程版本号时 0.0.0,该版本号会被三个...,比如CXX表示可以编译C++文件;C表示可以编译c文件;ASM表示可以编译汇编文件enable_language(CXX C ASM)配置测试用例可选变量配置自定义变量,默认不构建测试用例,可以由使用者通过传入参数打开测试用例构建选项...构建脚本,直接通过add_subdirectory()引用该三方库 add_subdirectory(xxx) # xxx是需要引入三方库源码文件夹名字源码非cmake构建或者无法通过cmake...引用当前源码路径下xxx库使用find_package方法来引用,此方法使用限制参照IDE上find_package使用分析,使用方法: find_package(XXX REQUIRED)...库对外提供被find_package能力install后,所有导出头文件、动态库、静态库、可执行二进制、cmake文件都可以安装到指定路径下install(TARGETS ${TARGET_NAME

    10920

    蓝桥ROS机器人课程之无限扩展∞∞∞(程序设计案例)

    现在简单扩展一下: 比如这里面分享代码和书籍,案例直接或间接可用。 对教学而言十分方便,对于学生而言使用实践起来也很容易。...使用: ​ git clone https://gitcode.net/ZhangRelay/ros_book.git ​ 将资源下载到蓝桥ROSCode文件夹下: 解压缩源代码:  编译第三章案例...: 测试一下啊 当然,如果编译第四章案例会遇到错误,类似问题已经在博客:  这里复现,并重复一下:  将navigation中对应包放入到指定位置: 再次编译,一切ok。...Call Stack (most recent call first): chapter4_tutorials/robot1_description/CMakeLists.txt:7 (find_package...CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package): Could not

    48220

    CMake库打包以及支持find_package

    本文对CMake中库打包,安装,导出以及支持find_package,使其能够很简单应用到其他项目中进行详细总结。...MY_LIBRARY_DEBUG_MODE "whether or not debug mode is activated" OFF)# add subdiretoriesadd_subdirectory(src)add_subdirectory...(example)add_subdirectory(tool)add_subdirectory(test)这个文件中有一些option操作,这些配置选项能够讲相关配置写入到config.hpp.in中,...REQUIRED并非必须,但是在引用目标的时候就必须附加相应变量。版本控制find_package()同样支持版本控制,你可以传入版本号作为第二个参数。...现在调用find_package(my_library 1.0 REQUIRED)这种形式,可以寻找1.0或者相兼容版本(如果你设置了兼容版本号)库。

    38000

    【Android 高性能音频】Oboe 开发流程 ( 导入 Oboe 库 | 使用预构建二进制库和头文件 | 编译 Oboe 源码 )

    /oboe) ② 将 Oboe 源码目录设置为工程子路径 : add_subdirectory 告诉 CMake 到 OBOE_DIR 路径中查找该路径下 CMakeLists.txt 构建脚本 ,.../oboe 指定是编译后二进制文件存放位置 ; add_subdirectory (${OBOE_DIR} ....将 Oboe 源码目录设置为工程子路径 , # add_subdirectory 告诉 CMake 到 OBOE_DIR 路径中查找该路径下 CMakeLists.txt 构建脚本 , # 编译该构建脚本中指定源码.../oboe 指定是编译后二进制文件存放位置 ; add_subdirectory (${OBOE_DIR} ./oboe) # 4....链接函数库 , native-lib 是本应用中编译动态库 , 这里链接 log 日志库 , oboe 高性能音频库 # 该 oboe 函数库就是上面 add_subdirectory 操作编译

    1K00

    cmake:使用find_package查找libjpeg静态库

    https://blog.csdn.net/10km/article/details/82931978 我们知道简单使用命令find_package可以查找指定package....对于经常会用到 jpeg库turbojpeg,可以用find_package(JPEG REQUIRED)来查找。...(STATUS "JPEG_LIBRARIES=${JPEG_LIBRARIES}") endif() 但我们知道cmake默认查找到是动态库,所以如果想查找libjpeg静态库,这样是不行。...其实FindJPEG.cmake脚本在设计时已经考虑到了这个问题,如下是FindJPEG.cmake脚本代码片段,可以看到调用者可以通过JPEG_NAMES这个变量指定优先查找到库名字。...所以如果想要指定优先使用静态库,前面的cmake脚本可以稍改一下,如下,就是在调用find_package之前设置JPEG_NAMES为想要静态库名: # 查找libjpeg库,优先使用静态库 if(

    1.8K20

    CMake 秘籍(五)

    只包含一个命令: add_subdirectory(message) 跳转到message文件夹,我们再次看到管理我们对message库依赖常用命令: 首先,我们调用find_package来找到一个合适库版本...这可以通过这个选项来指定,它可以接受 Git 识别为“版本”信息任何标识符, Git 提交 SHA、Git 标签,或者仅仅是一个分支名称。...准备工作 第七章,项目结构化所示,我们将把项目结构化为树状。每个子目录都有一个CMakeLists.txt文件,其中包含与该目录相关指令。...对于我们当前目的,名称重整并不是真正问题。Fortran 2003 标准为函数和子程序定义了一个bind属性,它接受一个可选name参数。...Python 解释器: find_package(PythonInterp REQUIRED) 然后,我们包含账户子目录: add_subdirectory(account) 之后,我们定义单元测试:

    62820

    CMake基础

    hellolib 文件夹下了,里面的 CMakeLists.txt 定义了 hellolib 生成规则 要在根目录使用他,可以用 CMake add_subdirectory 添加子目录,子目录也包含一个...CMakeLists.txt,其中定义库在 add_subdirectory 之后就可以在外面使用 子目录 CMakeLists.txt 里路径名(比如 hello.cpp)都是相对路径,这也是很方便一点...2.Neargye/magic_enum - 枚举类型反射,枚举转字符串等(实现方式很巧妙) 3.g-truc/glm - 模仿 GLSL 语法数学矢量/矩阵库(附带一些常用函数,随机数生成等).../glfw - OpenGL 窗口和上下文管理 10.libigl/libigl - 各种图形学算法大合集 引用系统中预安装第三方库: 可以通过 find_package 命令寻找系统中包/库: find_package.../module/FindBLAS.html 安装第三方库 - 包管理器: Linux 可以用系统自带包管理器( apt)安装 C++ 包 Windows 则没有自带包管理器。

    1.9K20
    领券