如果在同一目录下有多个源文件,那么只要在add_executable里把所有源文件都添加进去就可以了。但是如果有一百个源文件,再这样做就有点坑了,无法体现cmake的优越性,cmake提供了一个命令可以把指定目录下所有的源文件存储在一个变量中,这个命令就是 aux_source_directory(dir var)。
第一个参数dir是指定目录,第二个参数var是用于存放源文件列表的变量。

我们在main.c所在目录下再添加2个文件,testFunc1.c和testFunc1.h。添加完后整体文件结构如下,

├── build
├── CMakeLists1.txt
├── CMakeLists.txt
├── main.c
├── testFunc1.c
├── testFunc1.h
├── testFunc.c
└── testFunc.h
cmake_minimum_required (VERSION 2.8)project (demo)aux_source_directory(. SRC_LIST)add_executable(main ${SRC_LIST})

使用aux_source_directory把当前目录下的源文件存列表存放到变量SRC_LIST里,然后在add_executable里调用SRC_LIST(注意调用变量时的写法)。
再次执行cmake和make,并运行main,

mkdir build
cd build
cmake  ..
make
./main

aux_source_directory()也存在弊端,它会把指定目录下的所有源文件都加进来,可能会加入一些我们不需要的文件,此时我们可以使用set命令去新建变量来存放需要的源文件,如下,

cmake_minimum_required (VERSION 2.8)project (demo)set( SRC_LIST./main.c./testFunc1.c./testFunc.c)add_executable(main ${SRC_LIST})

Linux下CMake简明教程(三)同一目录下多个源文件相关推荐

  1. Linux下CMake简明教程(二)同一目录下多个源文件

    代码在git 接下来进入稍微复杂的例子:在同一个目录下有多个源文件.在之前的目录下添加2个文件,testFunc.c和testFunc.h.添加完后整体文件结构如下, (base) ledi@ledi ...

  2. Linux下CMake简明教程(四)不同目录下多个源文件

    代码在git 一般来说,当程序文件比较多时,我们会进行分类管理,把代码根据功能放在不同的目录下,这样方便查找.那么这种情况下如何编写CMakeLists.txt呢? 我们把之前的源文件整理一下(新建2 ...

  3. Linux下CMake简明教程(七)对库进行链接

    代码在git 既然我们已经生成了库,那么就进行链接测试下.重新建一个工程目录,然后把上节生成的库拷贝过来,然后在在工程目录下新建src目录和bin目录,在src目录下添加一个main.c,整体结构如下 ...

  4. Linux下CMake简明教程(九) 添加控制选项

    代码在git 有时希望在编译代码时只编译一些指定的源码,可以使用cmake的option命令,主要遇到的情况分为2种: 本来要生成多个bin或库文件,现在只想生成部分指定的bin或库文件 对于同一个b ...

  5. Linux下CMake简明教程(10) 定义宏来控制打印的信息

    代码在git 假设我们有个main.c,其内容如下 #include <stdio.h>int main(void) {#ifdef WWW1printf("hello worl ...

  6. Linux下CMake简明教程(八) 添加编译选项

    代码在git 有时编译程序时想添加一些编译选项,如-Wall,-std=c++11等,就可以使用add_compile_options来进行操作. 这里以一个简单程序来做演示,main.cpp如下 # ...

  7. Linux下CMake简明教程(六)动态库和静态库的编译控制

    代码在git 有时只需要编译出动态库和静态库,然后等着让其它程序去使用.让我们看下这种情况该如何使用cmake.首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CM ...

  8. Linux下CMake简明教程(五)正规一点的组织结构

    代码在git 正规一点来说,一般会把源文件放到src目录下,把头文件放入到include文件下,生成的对象文件放入到build目录下,最终输出的elf文件会放到bin目录下,这样整个结构更加清晰.让我 ...

  9. Linux下CMake简明教程(一)简单入门

    代码链接 CMake是开源.跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件 ...

最新文章

  1. 手机APP测试几个要点
  2. 人工智能:第七章 机器学习
  3. 并发编程——线程——理论知识
  4. Spark常用函数讲解之键值RDD转换
  5. bean找不到报空指针_为什么C指针可以实现函数间的通信呢?
  6. 银行加息前存的定期会随着加息吗?
  7. C++——必须使用复制构造函数的情况
  8. c语言将pwd结果赋给变量,《网络系统管理linux实训》全套PPT电子课件教案-第4章 shell编程.ppt...
  9. 深大自考本科所需课程
  10. js typeof instanceof
  11. Vue 组件库 (一)
  12. PHP自动加载(下)——PSR4
  13. MySQL安装下载教程
  14. 蒟蒻の算法题(~~完全不会~~的期望)01
  15. unity 鼠标按键点击判断函数
  16. Self Service Password部署
  17. 微信公众平台开发之模板消息(Java)
  18. MySql安装成功后没有my.ini文件怎么办?
  19. c++ cleartype_如何在Windows中调整ClearType以提高屏幕可读性
  20. 傅里叶变换 卷积定理 空域模板转换为频域模板

热门文章

  1. 【LSTM】基于LSTM网络的人脸识别算法的MATLAB仿真
  2. JDK8 HashMap--removeNode()移除节点方法
  3. Spring实战(第3版)
  4. zabbix监控多台站点服务器
  5. Eclipse上安装GIT插件EGit及使用
  6. 秀一秀我的微软MVP(最有价值专家)的大礼包和水晶奖杯!
  7. http://snmp.adventnet.com/help/snmpapi/snmpv3/table_handling/snmptables_rowdata.html
  8. python获取图片的颜色信息
  9. 汤家凤高等数学基础手写笔记-微分方程
  10. 苹果11怎么关掉横屏_苹果手机这些常规操作你可能不会!教你省电又省心?