CMake教程(三)——配置完善

接下来我以一个例子来解释常用的配置项。

cmake_minimum_required(VERSION 3.10)

set (CMAKE_CXX_COMPILER clang)                              # 指定C编译器
set (CMAKE_CXX_COMPILER clang++)                            # 指定C++编译器

set (CMAKE_C_STANDARD 99)                                   # 指定C标准
set (CMAKE_CXX_STANDARD 14)                                 # 指定C++标准

set(CMAKE_DEBUG_POSTFIX "_d")                               # 以_d作为Debug程序的后缀
# set(CMAKE_RELEASE_POSTFIX "_r")                             # 以_r作为Release程序的后缀

set (CMAKE_ENABLE_EXPORTS TRUE)                             # 允许编译器添加选项

project(hello LANGUAGES C CXX)                              # 选择项目类型

add_executable(${PROJECT_NAME} main.cpp)

set_target_properties(${PROJECT_NAME} PROPERTIES 
    DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})                   # 以_d来后缀Debug的lib文件夹

# set_target_properties(${PROJECT_NAME} PROPERTIES 
#     RELEASE_POSTFIX ${CMAKE_RELEASE_POSTFIX})               # 以_r来后缀Release的lib文件夹

set( CMAKE_EXPORT_COMPILE_COMMANDS ON )                     # 生成数据库文件,如果你使用Vim或Emacs,这是必不可少的。

如果不配置,默认使用的是Release构建模式

常规的构建,其实有更简单的方法

cmake -S . -B build
cmake --build build

对于Debug和Release构建,你只需要

# 构建Debug在项目根目录中的debug文件夹
cmake -S . -B debug -D CMAKE_BUILD_TYPE=Debug
cmake --build debug

# 构建Release在项目根目录中的release文件夹
cmake -S . -B release -D CMAKE_BUILD_TYPE=Release
cmake --build release

如果你想使用Ninja构建,你可以简单地添加-G选项,如:

# 用Ninja构建Release
cmake -S . -B release -D CMAKE_BUILD_TYPE=Release -G Ninja
cmake --build release

如果你使用Vim或emacs,可能需要将数据库文件链接到项目根目录,实现代码补全。

# (常用)构建生成数据库文件后,链接到项目根目录
ln debug/compile_commands.json compile_commands.json 

# 同样,但是一般生成release的时候已经准备打包了,一般不需要。
ln release/compile_commands.json compile_commands.json 

链接有一个好处,当你引入其他第三方库时,不需要重复复制到项目根目录,节约时间。

点击这里返回目录

参考链接:

posted @ 2022-08-01 12:58  Leeds_Garden  阅读(643)  评论(0编辑  收藏  举报