Linux下CMake简明教程(三)同一目录下多个源文件
如果在同一目录下有多个源文件,那么只要在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简明教程(三)同一目录下多个源文件相关推荐
- Linux下CMake简明教程(二)同一目录下多个源文件
代码在git 接下来进入稍微复杂的例子:在同一个目录下有多个源文件.在之前的目录下添加2个文件,testFunc.c和testFunc.h.添加完后整体文件结构如下, (base) ledi@ledi ...
- Linux下CMake简明教程(四)不同目录下多个源文件
代码在git 一般来说,当程序文件比较多时,我们会进行分类管理,把代码根据功能放在不同的目录下,这样方便查找.那么这种情况下如何编写CMakeLists.txt呢? 我们把之前的源文件整理一下(新建2 ...
- Linux下CMake简明教程(七)对库进行链接
代码在git 既然我们已经生成了库,那么就进行链接测试下.重新建一个工程目录,然后把上节生成的库拷贝过来,然后在在工程目录下新建src目录和bin目录,在src目录下添加一个main.c,整体结构如下 ...
- Linux下CMake简明教程(九) 添加控制选项
代码在git 有时希望在编译代码时只编译一些指定的源码,可以使用cmake的option命令,主要遇到的情况分为2种: 本来要生成多个bin或库文件,现在只想生成部分指定的bin或库文件 对于同一个b ...
- Linux下CMake简明教程(10) 定义宏来控制打印的信息
代码在git 假设我们有个main.c,其内容如下 #include <stdio.h>int main(void) {#ifdef WWW1printf("hello worl ...
- Linux下CMake简明教程(八) 添加编译选项
代码在git 有时编译程序时想添加一些编译选项,如-Wall,-std=c++11等,就可以使用add_compile_options来进行操作. 这里以一个简单程序来做演示,main.cpp如下 # ...
- Linux下CMake简明教程(六)动态库和静态库的编译控制
代码在git 有时只需要编译出动态库和静态库,然后等着让其它程序去使用.让我们看下这种情况该如何使用cmake.首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CM ...
- Linux下CMake简明教程(五)正规一点的组织结构
代码在git 正规一点来说,一般会把源文件放到src目录下,把头文件放入到include文件下,生成的对象文件放入到build目录下,最终输出的elf文件会放到bin目录下,这样整个结构更加清晰.让我 ...
- Linux下CMake简明教程(一)简单入门
代码链接 CMake是开源.跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件 ...
最新文章
- 手机APP测试几个要点
- 人工智能:第七章 机器学习
- 并发编程——线程——理论知识
- Spark常用函数讲解之键值RDD转换
- bean找不到报空指针_为什么C指针可以实现函数间的通信呢?
- 银行加息前存的定期会随着加息吗?
- C++——必须使用复制构造函数的情况
- c语言将pwd结果赋给变量,《网络系统管理linux实训》全套PPT电子课件教案-第4章 shell编程.ppt...
- 深大自考本科所需课程
- js typeof instanceof
- Vue 组件库 (一)
- PHP自动加载(下)——PSR4
- MySQL安装下载教程
- 蒟蒻の算法题(~~完全不会~~的期望)01
- unity 鼠标按键点击判断函数
- Self Service Password部署
- 微信公众平台开发之模板消息(Java)
- MySql安装成功后没有my.ini文件怎么办?
- c++ cleartype_如何在Windows中调整ClearType以提高屏幕可读性
- 傅里叶变换 卷积定理 空域模板转换为频域模板
热门文章
- 【LSTM】基于LSTM网络的人脸识别算法的MATLAB仿真
- JDK8 HashMap--removeNode()移除节点方法
- Spring实战(第3版)
- zabbix监控多台站点服务器
- Eclipse上安装GIT插件EGit及使用
- 秀一秀我的微软MVP(最有价值专家)的大礼包和水晶奖杯!
- http://snmp.adventnet.com/help/snmpapi/snmpv3/table_handling/snmptables_rowdata.html
- python获取图片的颜色信息
- 汤家凤高等数学基础手写笔记-微分方程
- 苹果11怎么关掉横屏_苹果手机这些常规操作你可能不会!教你省电又省心?