一. 简介
前面一篇文章学习了针对只有一个 .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)