cmake相关链接
目录
aux_source_directory 将制定路径下所有源文件保存到变量
target_link_libraries 将目标文件与库文件进行链接
1 多文件编译-单个目录下
单个目录下多文件比较简单,只需要在单文件编译基础上,把所有文件添加到add_executable()源文件列表即可,下面举个例子说明
文件结构如下,其中buil是外部构建时使用的,用来放构建文件,使源文件与构建文件隔离,关于外部构建单文件编译中有提到
dawn@DAWN-AMD:~/workstation/cmaketest$ tree
.
├── CMakeLists.txt
├── build
├── main.c
├── sayhello.c
└── sayhello.h
文件内容:
./CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project(CMakeTest)
add_executable(cmaketest sayhello.c main.c)
./main.c:
#include"sayhello.h"
int main()
{
sayhello();
}
./sayhello.c:
#include"sayhello.h"
void sayhello()
{
printf("hello CMake !\n");
}
./sayhello.h:
#include<stdio.h>
void sayhello(void);
然后执行cmake . && make就可以编译出可执行程序cmaketest
aux_source_directory 将指定路径下所有源文件保存到变量
但是当有很多文件时,一个一个写到add_executable里显然是很麻烦的事,我们可以借助aux_source_directory实现将整个目录下所有源文件加到工程,具体用法:
aux_source_directory(<dir> <variable>)
该命令会将指定目录下的所有源文件保存存到指定变量名中。于是上面的CMakeLists.txt可以简写成
./CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project(CMakeTest)
aux_source_directory(. all_src)
add_exEcutablE(cmaketest ${all_src})
aux_source_directory(. all_src) 将"."目录(当前CMakeLists.txt所在目录)下的所有源文件保存到all_src变量中

本文详细介绍了如何使用CMake进行多文件编译,包括单个目录下的多文件编译、不同目录下的文件编译,以及如何使用动态和静态链接库。通过具体的示例,演示了CMakeLists.txt文件的编写技巧。
737

被折叠的 条评论
为什么被折叠?



