#include <stdio.h>
#include “testFunc.h”
int main(void)
{
func(100);
return 0;
}
修改CMakeLists.txt,在add\_executable的参数里把testFunc.c加进来
cmake_minimum_required(VERSION 2.8)
project(demo)
add_executable(main main.c testFunc.c)
然后重新执行`cmake .`生成Makefile并运行make:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200519171735164.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ5ODMxOA==,size_16,color_FFFFFF,t_70)
然后运行重新生成的elf文件main:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200519171744514.png)
运行成功!可以类推,如果在同一目录下有多个源文件,那么只要在`add_executable`里把所有源文件都添加进去就可以了。但是如果有一百个源文件,再这样做就有点坑了,无法体现cmake的优越性,cmake提供了一个命令可以把指定目录下所有的源文件存储在一个变量中,这个命令就是`aux_source_directory(dir var)`。第一个参数dir是指定目录,第二个参数var是用于存放源文件列表的变量。
我们在main.c所在目录下再添加2个文件,testFunc1.c和testFunc1.h。添加完后整体文件结构如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200519171759263.png)
testFunc1.c如下:
/*
** testFunc1.c
*/
#include <stdio.h>
#include “testFunc1.h”
void func1(int data)
{
printf(“data is %d\n”, data);
}
testFunc1.h如下:
/*
** 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:
![在这里插入图片描述](https://img-blog.csdnimg.cn/202005191718541.png?x-oss