0
点赞
收藏
分享

微信扫一扫

Linux中CMake的使用3-不同目录多个源文件


上篇介绍了在​同一目录​下有多个源文件时如何编写CMakeLists.txt。

本篇继续介绍​不同目录​下有多个源文件时如何编写CMakeLists.txt

1 有1个独立文件夹

1.1 文件目录结构

先来看下面这种情况,文件目录结构如下,sum.c、sum.h和main.c的代码内容见前面的文章。

Linux中CMake的使用3-不同目录多个源文件_驱动开发

1.2 编写CMakeLists.txt

对于这种情况,CMakeLists.txt可以有不同的写法:

写法1

首先看第一种写法,如下:

cmake_minimum_required (VERSION 2.8)

project (sum_test)

include_directories (func)

add_executable(sum_test main.c func/sum.c)

这里出现了1个新的命令:​include_directories​,用来指定头文件的搜索路径

写法2

再来看第二种写法,如下:

cmake_minimum_required (VERSION 2.8)

project (sum_test)

include_directories (func)

aux_source_directory (func SRC_LIST)

add_executable(sum_test main.c ${SRC_LIST})

可以使用​aux_source_directory​,将指定目录下的​源文件​列表存放到​变量​中

1.3 编译测试

在当前目录执行cmake指令:

cmake .

cmake后面的点,用来告诉CMake工具在当前目录中搜寻CMakeLists.txt文件。

自动生成makefile文件之后,再使用make指令编译源码:

make

Linux中CMake的使用3-不同目录多个源文件_源文件_02

最后可以看到程序的运行结果。

2 有多个独立文件夹(情况1)

2.1 文件目录结构

再来看下面这种情况,文件目录结构如下,sum.c、sum.h、sub.c、sub.h和main.c的代码内容见前面的文章。

其中sum.c、sum.h、sub.c和sub.h放到func这个文件夹中:

Linux中CMake的使用3-不同目录多个源文件_linux_03

2.2 编写CMakeLists.txt

注意CMakeLists.txt和之前的区别,其实它和上面的“写法2”一样:

cmake_minimum_required (VERSION 2.8)

project (sum_sub_test)

include_directories (func)

aux_source_directory (func SRC_LIST)

add_executable(sum_sub_test main.c ${SRC_LIST})

2.3 编译测试

按照之前的编译测试流程进行编译测试,结果如下:

Linux中CMake的使用3-不同目录多个源文件_源文件_04

3 有多个独立文件夹(情况2)

3.1 文件目录结构

再来看下面这种情况,文件目录结构如下,sum.c、sum.h、sub.c、sub.h和main.c的代码内容见前面的文章。

其中sum.c和sum.h放到sumfunc这个文件夹中,sub.c和sub.h放到subfunc这个文件夹中:

此次两种文件分布在两个文件夹中:

Linux中CMake的使用3-不同目录多个源文件_源文件_05

3.2 编写CMakeLists.txt

注意CMakeLists.txt和之前的区别:

cmake_minimum_required (VERSION 2.8)

project (sum_sub_test)

include_directories (sumfunc subfunc)

aux_source_directory (sumfunc SRC_LIST1)
aux_source_directory (subfunc SRC_LIST2)

add_executable(sum_sub_test main.c ${SRC_LIST1} ${SRC_LIST2})

这里使用了两个​aux_source_directory​,将两个目录下的​源文件​列表分别存放到不同的​变量​中

3.3 编译测试

按照之前的编译测试流程进行编译测试,结果如下:

Linux中CMake的使用3-不同目录多个源文件_linux_06

4 总结

本篇介绍了不同目录下有多个源文件时如何编写CMakeLists.txt。

Linux中CMake的使用3-不同目录多个源文件_驱动开发_07

对于​不同文件夹下的多个源文件​,主要是使用​include_directories​来添加头文件的搜索目录

cmake_minimum_required (VERSION 2.8)

project (sum_test)

include_directories (func)

add_executable(sum_test main.c func/sum.c)

另外,仍然可以借助​aux_source_directory​把指定目录下的​所有源文件​存列表存放到​变量​中:

cmake_minimum_required (VERSION 2.8)

project (sum_test)

include_directories (func)

aux_source_directory (func SRC_LIST)

add_executable(sum_test main.c ${SRC_LIST})

总的来说,一个新的知识点就是​include_directories​的使用。



举报

相关推荐

0 条评论