cmake入门篇--多文件编译

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

 

cmake相关链接

cmake门口观望篇-单文件编译


目录

1 多文件编译-单个目录下

aux_source_directory 将制定路径下所有源文件保存到变量

2 多文件不在同一目录

2.1 不使用链接库

include_directories 添加头文件路径

2.2 使用动态链接库

add_subdirectory 添加外部路径

add_library 用指定文件编译库文件

2.3 使用静态链接库


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变量中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值