在目录中查找所有源文件。

aux_source_directory(<dir> <variable>)

收集指定目录中所有源文件的名称,并将列表存储在提供的变量中。

该命令旨在供使用显式模板实例化的项目使用。 模板实例化文件可以存储在Templates子目录中,并使用此命令自动收集,以避免手动列出所有实例化。

试图使用此命令来避免编写库或可执行目标的源文件列表。 尽管这似乎可行,但是CMake无法生成知道何时添加新源文件的生成系统。 通常,生成的构建系统知道何时需要重新运行CMake,因为修改了CMakeLists.txt文件以添加新的源。 当仅将源代码添加到目录而不修改该文件时,将不得不手动重新运行CMake来生成包含新文件的构建系统。

翻译自官方文档,原文链接为:aux_source_directory

使用示例

CMake 入门实战提供的示例程序以及对应的 CMakeLists.txt 示例有 aux_source_directory 的使用。

同一目录,多个源文件

对应的源代码所在目录:Demo2
之前的例子只有单个源文件。现在假如把 power 函数单独写进一个名为 MathFunctions.c 的源文件里,使得这个工程变成如下的形式:

./Demo2|+--- main.cc|+--- MathFunctions.cc|+--- MathFunctions.h

这个时候,CMakeLists.txt 可以改成如下的形式:

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)# 项目信息
project (Demo2)# 指定生成目标
add_executable(Demo main.cc MathFunctions.cc)

唯一的改动只是在 add_executable 命令中增加了一个 MathFunctions.cc 源文件。这样写当然没什么问题,但是如果源文件很多,把所有源文件的名字都加进去将是一件烦人的工作。更省事的方法是使用 aux_source_directory 命令,该命令会查找指定目录下的所有源文件,然后将结果存进指定变量名。其语法如下:

aux_source_directory(<dir> <variable>)

因此,可以修改 CMakeLists.txt 如下:

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)# 项目信息
project (Demo2)# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)# 指定生成目标
add_executable(Demo ${DIR_SRCS})

这样,CMake 会将当前目录所有源文件的文件名赋值给变量 DIR_SRCS,再指示变量 DIR_SRCS 中的源文件需要编译成一个名称为 Demo 的可执行文件。

转载:aux_source_directory_ccf19881030的专栏-CSDN博客_aux_source_directory

(SAW:Game Over!)

cmake / aux_source_directory相关推荐

  1. Qt Clion使用飞扬青云的自定义控件

    飞扬青云自定义控件下载 按照对应版本下载自定义控件 修改clion cmake cmake_minimum_required(VERSION 3.15) set(PROJECT_NAME TEST) ...

  2. cmake (3)多个源文件aux_source_directory

    1. 场景 Demo2 | +--- main.cc | +--- MathFunctions.cc | +--- MathFunctions.h # CMake 最低版本号要求 cmake_mini ...

  3. CMake:aux_source_directory

    aux_source_directory 查找在某个路径下的所有源文件. aux_source_directory(< dir > < variable >) 具体用法: au ...

  4. CMake 入门实战,从实例入手,讲解 CMake 的常见用法,例如aux_source_directory的用法

    http://www.hahack.com/codes/cmake/ https://sourceforge.net/projects/qmake2cmake/ --qmake转换cmake小工具 什 ...

  5. ++项目 cmake头文件路径_CMAKE入门实战

    0.导语 最近做的项目使用CLION构建,而这个采用CMakeLists.txt管理,因此为了更好的学习,故找到了一篇大牛级别的入门文章,有文章有代码,本文是花了一点时间把这篇文章学习后的重要点记录吧 ...

  6. cmake语法【一】

    一.Cmake 简介 cmake 是一个跨平台.开源的构建系统.它是一个集软件构建.测试.打包于一身的软件.它使用与平台和编译器独立的配置文件来对软件编译过程进行控制. 二.常用命令 指定 cmake ...

  7. CMake学习(一)

    什么是 CMake 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等.这些 Make 工 ...

  8. CMake编译工具与项目构建

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文章导读 本文从C/C++代码的编译过程入手,弄清楚Make与Ma ...

  9. 【使用CMake组织C++工程】2:CMake 常用命令和变量

    前言 前面的文章介绍了一个最简单的CMake工程,这篇文章将介绍一个稍微复杂一些的CMake工程,结合这个工程总结一下在组织一个C/C++工程时最为常用的一些CMake命令和变量.对于涉及到的命令和变 ...

最新文章

  1. css3 使用SVG做0.5px 的边框细线
  2. Leetcode 102. 二叉树的层次遍历 解题思路及C++实现
  3. ASP.NET MVC 向浏览器发送文件以提供文件下载功能
  4. J - 哈密顿绕行世界问题
  5. gh0st源码分析:屏幕监控
  6. 实现SDI与MDI的转换 (转)
  7. 微信小程序常见问题集合(长期更新)
  8. android ndk 在project中加入引入dll,在Android-Studio中导入“预建库”(NDK支持)
  9. C语言字符型常量和字符串常量的区别
  10. docker 部署Gitlab
  11. esayexcel导出动态表头数据
  12. 提高linux运行速度,教你如何提高Linux操作系统的运行速度
  13. 8086系列(18):查找电话号码
  14. APP微信小程序测试一览表(常规用例)
  15. python中相对路径怎么写,python相对路径写法
  16. 关键字synchronized与volatile详解
  17. Unable to load DLL 'xxx.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)
  18. andriod手机信号显示G、E、H、T是什么意思?
  19. 前端小练习:纯css菜单栏
  20. Unicode字符列表

热门文章

  1. Vertica的这些事lt;十五gt;—— Vertica备份元数据信息
  2. javascript数组查重方法总结
  3. 解决Weblogic 本机可以访问控制台,网络IP访问不了
  4. 48. C# -- 事件
  5. FLV Extract 1.2.1
  6. 推荐 12 个学习前端必备的神仙级工具类项目与网站
  7. Java 源码中 unchecked 什么意思
  8. 让产品经理GC的文本段落两端对齐css
  9. 妙用 background 实现花式文字效果
  10. django-vue-admin前端设置后台接口地址为127.0.0.1产生跨域问题解决办法