新建两个文件head,src,用于存放头文件和c文件。
再新建CMakeLists.txt文件,用于cmake配置。
当前文件结构:
--->CMakeLists.txt
|
--->head
|
--->src
新建一个头文件hello.h
内容如下:
#ifndef HELLO_H
#define HELLO_H
#include "stdio.h"
void Print(void);
#endif
并放到head文件里面去。
新建main.c && hello.c.
hello.c内容如下:
#include "hello.h"
void Print(void)
{
printf("Hello!\n");
}
main.c内容如下:
#include "hello.h"
int main()
{
Print();
return 0;
}
将这个两个c文件放到src文件里面去。
现在文件结构如下:
--->CMakeLists.txt
|
--->head--->hello.h
|
--->src--->main.c
--->hello.c
再到src目录下再新建一个CMakeLists.txt文件,内容如下:
set(SRC_LIST main.c
hello.c
)
add_executable(main ${SRC_LIST})
此时返回顶层目录。
--->CMakeLists.txt
|
--->head--->hello.h
|
--->src--->main.c
--->hello.c
--->CMakeLists.txt
再对顶层的CMakeLists.txt文件写入如下内容:
#顶层CmakeLists
cmake_minimum_required(VERSION 3.0) #不是必须的内容
include_directories( #指定头文件
"C:/Users/ASUS/Desktop/Cmake/head"
)
#指定生成main.exe文件
project(main)
#关联src目录下的CMakeLists.txt
add_subdirectory(src bin) #指定bin文件,main.exe文件生成在这里面
#add_executable(main main.c hello.c) #.exe
#add_library(hello STATIC hello.c) #.lib
#add_library(Hello SHARED hello.c) #.dll
此时新建一个build空文件,这是为了后面的编译生成的文件都放在这里面,防止污染源代码。
现在的文件结构如下:
--->CMakeLists.txt
|
--->head--->hello.h
|
--->src--->main.c
--->hello.c
--->CMakeLists.txt
|
--->build
进入到build文件里面去:
现在build是完全空的!
然后输入命令:cmake -G "MinGW Makefiles" ..
我这里指定了MinGW编译器进行编译。
由此得到Makefile文件,再使用mingw32-make
,进行编译。
最后进入bin目录,可以看见此时生成了main.exe。
至此编译全部完成。
运行如下: