前言
cmake支持多種不同方式設置編譯器標志:
1.使用 target_compile_definitions()設置編譯器標志
2. 使用CMAKE_C_FLAGS和CMAKE_CXX_FLAGS設置編譯標志
一, 目錄結構
├── CMakeLists.txt
├── main.cpp
* link:CMakeLists.txt[] - Contains the CMake commands you wish to run
* link:main.cpp[] - The source file with main
二,cmake腳本
cmake_minimum_required(VERSION 3.5)
# 設置默認C++編譯標志
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEX2" CACHE STRING "Set C++ Compiler Flags" FORCE)
project (compile_flags)
add_executable(cmake_examples_compile_flags main.cpp)
# 使用target_compile_definitions設置編譯標志
target_compile_definitions(cmake_examples_compile_flags
PRIVATE EX3
)
三,擴展分析
現代cmake(modern cmake)推薦使用target_compile_definitions設置C++編譯標志。
因為target_compile_definitions能夠設置編譯標志的作用域,關鍵字INTERFACE,PUBLIC和PRIVATE用來指定其后參數的作用域。
PRIVATE 和 PUBLIC 項將產生 <target> 的 COMPILE_DEFINITIONS 屬性。PUBLIC 和 INTERFACE 項將產生 <target> 的INTERFACE_COMPILE_DEFINITIONS 屬性。
而如果設置了CMAKE_CXX_FLAGS或CMAKE_C_FLAGS標志將使得當前目錄以及子目錄下所有的編譯標志都為該標志。
下面這篇文章還包含一些其他編譯命令。