【CMake】(2)常用配置项

最低CMake版本要求

cmake_minimum_required(VERSION 3.10)

这指定了构建此项目所需的最低CMake版本。
可选,非必须,如果不加可能会有警告

项目名称和版本

project(MyProject VERSION 1.0.0)

语法:

project(<PROJECT-NAME> [<language-name>...])  
project(<PROJECT-NAME>  
       [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]  
       [DESCRIPTION <project-description-string>]  
       [HOMEPAGE_URL <url-string>]  
       [LANGUAGES <language-name>...])

定义工程名称,并可指定工程的版本、工程描述、web主页地址、支持的语言(默认情况支持所有语言),如果不需要这些都是可以忽略的,只需要指定出工程名字即可。

指定C++标准

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

这些命令设置了C++标准版本为C++17,并且指定这一标准是必须的。

添加可执行文件

定义工程会生成一个可执行程序

add_executable(可执行程序名 源文件名称)
  • 这里的可执行程序名和project中的项目名没有任何关系

  • 源文件名可以是一个也可以是多个,如有多个可用空格或;间隔

# 样式1  
add_executable(app add.c div.c main.c mult.c sub.c)  
# 样式2  
add_executable(app add.c;div.c;main.c;mult.c;sub.c)

这将创建一个名为MyExecutable的可执行文件,其源代码来自main.cpp

添加库文件

如果你的项目中还有库,你可以在CMakeLists.txt中使用add_library命令来添加它们。例如,如果你有一个名为mylib的静态库:

# 添加库
add_library(mylib STATIC mylib.c mylib.h)

然后,在添加可执行文件时,链接这个库:

# 添加可执行文件
add_executable(MyProject main.c)

# 链接库
target_link_libraries(MyProject PRIVATE mylib)

链接库

target_link_libraries(MyExecutable PRIVATE MyLibrary)

这将MyLibrary库链接到MyExecutable可执行文件。

包含目录

target_include_directories(MyExecutable PRIVATE ${PROJECT_SOURCE_DIR}/include)

这告诉CMake在编译MyExecutable时包含/include目录。

选项

option(MY_OPTION "Description of my option" ON)

这定义了一个选项MY_OPTION,可以通过-DMY_OPTION=ON-DMY_OPTION=OFF在CMake命令行中设置。

条件语句

if(MY_OPTION)
    # Do something if MY_OPTION is ON
else()
    # Do something else if MY_OPTION is OFF
endif()

这根据MY_OPTION的值执行不同的命令。

安装规则

install(TARGETS MyExecutable DESTINATION bin)
install(FILES myconfig.conf DESTINATION etc)

这设置了安装规则,使得MyExecutable被安装到bin目录,myconfig.conf文件被安装到etc目录。

生成配置文件

configure_file(config.h.in config.h)

这将根据config.h.in中的设置生成config.h文件,通常用于根据CMake选项配置源代码。

自定义变量

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DMY_DEBUG_FLAG")

这为Debug构建类型添加了-DMY_DEBUG_FLAG编译器标志。

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游码客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值