008.CMake子目录项目

文章目录add_subdirectory()命令相关变量作用域include()命令相关变量return()命令总结对于简单的项目,使用单个文件夹是可以的,但复杂项目往往要按照模块进行拆分,这就需要划分不同的子目录。CMake提供了两种机制来实现这一目标,一个是add_subdirectory()命令,一个是include()命令。这两个命令有很大的区别,一定要仔细区别。add_subdirectory()命令add_subdirectory()命令允许项目将另一个目录引入到生成树中。该目录必须有自己
摘要由CSDN通过智能技术生成


对于简单的项目,使用单个文件夹是可以的,但复杂项目往往要按照模块进行拆分,这就需要划分不同的子目录。CMake提供了两种机制来实现这一目标,一个是add_subdirectory()命令,一个是include()命令。这两个命令有很大的区别,一定要仔细区别。

add_subdirectory()命令

add_subdirectory()命令允许项目将另一个目录引入到生成树中。该目录必须有自己的CMakeLists.txt文件,该文件将在调用add_subdirectory()命令时进行处理,并在项目的生成树中为其创建相应的目录。其命令格式为:

add_subdirectory(sourceDir [ binaryDir ] [ EXCLUDE_FROM_ALL ])

其中的sourceDir不必是根源码目录的子目录,尽管通常是这个样子,但实际上可以添加任何目录,sourceDir被指定为绝对路径或相对路径,相对于当前源码目录。只有在添加主源码树之外的目录时,才需要绝对路径。

一般情况下,不需要指定binaryDir。CMake会在生成树中创建一个与sourceDir同名的目录。如果sourceDir是源树之外的路径,那么CMake要求指定binaryDir。

EXCLUDE_FROM_ALL是可选的,控制该子目录定义的构建目标是否添加到all目标中。前面已经提到过很多次了。区别在于有本书上说这个特性对于某些CMake版本或者目标平台,可能会出问题,语焉不详,稍作留心即可。

相关变量

有时,开发人员需要知道与当前源码目录对应的生成目录的位置,例如在运行时复制所需的文件或执行自定义生成任务时。CMake提供了许多变量,用于跟踪当前正在处理的CMakeLists.txt文件的源目录和构建目录。当CMake处理每个文件时,以下几个只读变量将自动更新。它们总是包含绝对路径。

CMAKE_SOURCE_DIR:

源码树的最顶层目录(即主CMakeLists.txt文件位于的位置)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温铜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值