最简单的CMake工程
创建CMakeLists.txt文件,只需要三行代码。
cmake_minimum_required(VERSION 3.16.3)
project(One)
add_executable(app hello.c)
cmake_minimum_required(VERSION 3.16.3) 设置CMake工程要求的CMake最低版本。
project(One)设置工程名为One。
add_executable(app hello.c)设置可执行文件的名字以及源文件。
其中源文件hello.c的内容如下,
#include <stdio.h>
int main()
{
printf("Hello World.\n");
return 0;
}
工程目录结构如下图,
然后在build目录中执行
CMake ..
会在build目录中生成中间文件和Makefile,执行make指令,会生成最终的可执行文件app
包含多个源文件
工程目录结构如下,
需要在CMakeLists.txt文件中添加
include_directories(./inc)
将其他源文件math.c添加到源文件队列,然后通过cmake和make指令得到可执行文件。
制作库文件
使用add_library()可以生成库文件。
cmake_minimum_required(VERSION 3.16.3)
project(One)
include_directories(./inc)
add_library(m_math SHARED math.c)
链接库文件
CMakeLists.txt内容如下,
cmake_minimum_required(VERSION 3.16.3)
project(One)
include_directories(./inc)
link_directories(./build)
add_executable(app hello.c)
target_link_libraries(app m_math)
link_directories(./build)设置库文件路径,相当于-L编译选项。
hello.c内容如下,
#include <stdio.h>
#include "m_math.h"
int main()
{
printf("Hello World.\n");
printf("The sum is: %d\n", m_add(1, 4));
return 0;
}
基本指令
set:显式地定义变量
message:打印信息
cmake_minimum_required(VERSION 3.16.3)
project(One)
set(MyValue JHRF)
message(${MyValue})
add_compile_options(-wall -std=c++11 -O2):添加编译参数
add_subdirectory(src):添加src子目录,子目录中包含一个CMakeLists.txt文件
aux_source_directory(. SRC):将当前目录下所有源代码文件名存储到SRC变量中