一. 简介
前面一篇文章学习了针对只有一个 .c源文件,如何编写 CMakeLists.txt内容,从而使用 cmake工具如何编译工程。文章如下:
cmake的使用方法: 单个源文件的编译-CSDN博客
本文学习针对 多个 .c源文件, CMakeLists.txt文件如何编写,从而 cmake工具是如何编译工程的?
二. cmake的使用方法: 多个源文件的编译
1. 包含多个 .c文件的工程
我这里实现一个
hello.h
头文件和
hello.c
源文件。在
hello.c
文件中定义了一个
hello函数
,然后在
main.c
源文件中将会调用该函数:
hello.h
文件中代码如下:
#ifndef __TEST_HELLO_
#define __TEST_HELLO_
void hello(const char *name);
#endif //__TEST_HELLO_
hello.c
文件代码如下:
#include <stdio.h>
#include "hello.h"
void hello(const char *name)
{
printf("Hello %s!\n", name);
}
main.c
文件代码如下:
#include "hello.h"
int main(void)
{
hello("World");
return 0;
}
2. cmake的使用方法: 多个源文件的编译
编写 CMakeLists.txt 文件
创建 CMakeLists.txt 文件,CMakeLists.txt 文件中内容如下:
project(HELLO)
set(SRC_LIST main.c hello.c)
add_executable(hello ${SRC_LIST)})
工程目录结构如下所示:
同样,进入到 build 目录下,执行 cmake、再执行 make 编译工程,最终就会得到可执行文件hello,在该工程根目录下输入如下命令:
cd build/
cmake ../
make
CMakeLists.txt 文件中代码分析:
在本例子中,
CMakeLists.txt
文件中使用到了
set
命令,
set
命令用于设置变量,如果变量不存在则创建
该变量并设置它;
在本例中,我们定义了一个
SRC_LIST
变量,
SRC_LIST
变量是一个源文件列表,记录生
成可执行文件
hello
所需的源文件
main.c
和
hello.c
;
而在
add_executable
命令引用了该变量;当然我们也可
以不去定义
SRC_LIST
变量,直接将源文件列表写在
add_executable
命令中,如下:
add_executable(hello main.c hello.c)