cmake#

首先确定你的开发环境中cmake的版本

cmake --version

为了更好的管理项目,以下示例将编译后产生的文件统一放到build目录。

1. 使用cmake编译单个c文件的项目#

该项目项目目录结构如下所示:

.
├── build
├── CMakeLists.txt
└── test.c

CMakeLists.txt文件内容如下:

cmake_minimum_required(VERSION 3.10.2)

# 设置项目名称和版本,并将项目名称赋值给PROJECT_NAME变量
project(hello_cmake VERSION 0.1.0)

add_executable(DO_IT test.c)

编译该项目(下文都将通过该方式编译项目,请知悉):

$cd build
cmake ..
make

编译后项目的目录结构如下:

.
├── build
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   ├── cmake_install.cmake
│   ├── DO_IT
│   └── Makefile
├── CMakeLists.txt
└── test.c

DO_IT就是最终生成的可执行文件。

2. 使用cmake编译多个c文件的项目#

通常一个C项目都会有多个源文件,本例中项目的目录结构如下:

.
├── build
├── CMakeLists.txt
├── inc
│   ├── addition.h
│   ├── division.h
│   ├── multiplication.h
│   └── subtraction.h
└── src
    ├── addition.c
    ├── division.c
    ├── multiplication.c
    ├── subtraction.c
    └── test.c

CMakeLists.txt文件内容如下:

cmake_minimum_required(VERSION 3.10.2)

project(hello_cmake VERSION 0.1.0)

# 相当于GCC的 -I参数
include_directories(inc)

# 相当于 
# SRC = src/addition.c src/division.c src/multiplication.c src/subtraction.c src/test.c
aux_source_directory(src SRC)

add_executable(DO_IT ${SRC})

3. 安装可执行文件#

3. 使用cmake编译多线程c程序#

cmake_minimum_required(VERSION 3.14.5)
project(hello_cmake VERSION 0.1.0)

find_package (Threads)
add_executable (myapp t.c)
target_link_libraries (myapp ${CMAKE_THREAD_LIBS_INIT})