Linux Makefile:使用CMake生成Makefile文件_cmake写makefile

本文详细介绍了如何使用CMake构建Linux项目,包括处理不同目录下的源文件、组织结构、动态库和静态库的编译控制、库的链接、添加编译选项以及控制选项。通过实例展示了CMakeLists.txt的编写方法,帮助读者掌握CMake在项目管理中的应用。
摘要由CSDN通过智能技术生成
/\*
\*\* testFunc1.h
\*/

#ifndef \_TEST\_FUNC1\_H\_
#define \_TEST\_FUNC1\_H\_

void func1(int data);

#endif

再修改main.c,调用testFunc1.h里声明的函数func1():

#include <stdio.h>

#include "testFunc.h"
#include "testFunc1.h"

int main(void)
{
	func(100);
	func1(200);

	return 0;
}

修改CMakeLists.txt:

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:
在这里插入图片描述
可以看到运行成功了。

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})

四、 不同目录下多个源文件

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

我们把之前的源文件整理一下(新建2个目录test_func和test_func1),整理好后整体文件结构如下:
在这里插入图片描述

把之前的testFunc.c和testFunc.h放到test_func目录下,testFunc1.c和testFunc1.h则放到test_func1目录下。其中,CMakeLists.txt和main.c在同一目录下,内容修改成如下所示:

cmake_minimum_required(VERSION 2.8)

project(demo)

include_directories(test_func test_func1)

aux_source_directory(test_func SRC_LIST)
aux_source_directory(test_func1 SRC_LIST1)

add_executable(main main.c ${SRC_LIST} ${SRC_LIST1})

这里出现了一个新的命令:include_directories。该命令是用来向工程添加多个指定头文件的搜索路径,路径之间用空格分隔。

因为main.c里include了testFunc.h和testFunc1.h,如果没有这个命令来指定头文件所在位置,就会无法编译。当然,也可以在main.c里使用include来指定路径,如下

#include "test\_func/testFunc.h"
#include "test\_func1/testFunc1.h"

只是这种写

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值