8.设置编译器选项
设置编译器选项
前面的示例展示了如何探测 CMake,从而获得关于编译器的信息,以及如何切换项目中的编译器。后一个任务是控制项目的编译器标志。CMake为调整或扩展编译器标志提供了很大的灵活性,您可以选择下面两种方法:
CMake 将编译选项视为目标属性。因此,可以根据每个目标设置编译选项,而不需要覆盖 CMake 默认值。
可以使用 -D CLI 标志直接修改 CMAKE_
具体实施
设置CMake的最低版本:
1
cmake_minimum_required(VERSION 3.5)
声明项目名称和语言
1
project(hello-cmake LANGUAGES CXX)
然后,打印当前编译器标志。CMake将对所有C++目标使用这些
1
message(STATUS "C++ compiler flags is: ${CMAKE_CXX_FLAGS}")
为目标准备了标志列表,其中一些将无法在Windows上使用
1
2
3
4
5list(APPEND flags "-fPIC" "-Wall")
if (NOT WIN32)
list(APPEND flags "-Wextra" "-Wpedantic")
endif()添加了一个新的目标—— message 库,并列出它的源依赖关系
1
2
3
4
5add_library(message
STATIC
Message.h
Message.cpp
)为这个库目标设置了编译选项
1
2
3
4target_compile_options(message
PRIVATE
${flags}
)然后,将生成 hello-cmake 可执行文件作为一个目标
1
add_executable(hello-cmake hello-cmake.cpp)
还为可执行目标设置了编译选项
1
2
3
4target_compile_options(hello-cmake
PRIVATE
"-fPIC"
)最后,将可执行文件链接到 message 库
1
target_link_libraries(hello-cmake message)
如何工作
1 | # 本例中,警告标志有 -Wall 、 -Wextra 和 -Wpedantic ,将这些标示添加到 geometry 目标的编译选项中; compute-areas 和 geometry 目标都将使用 -fPIC 标志。 |