四时宝库

程序员的知识宝库

【CMake】(2)常用配置项(cmake -wl)

最低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编译器标志。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接