前言html
cmake支持多種不一樣方式設置編譯器標誌:ui
1.使用 target_compile_definitions()設置編譯器標誌htm
2. 使用CMAKE_C_FLAGS和CMAKE_CXX_FLAGS設置編譯標誌blog
一, 目錄結構作用域
├── CMakeLists.txt
├── main.cppget
* link:CMakeLists.txt[] - Contains the CMake commands you wish to run
* link:main.cpp[] - The source file with main編譯器
二,cmake腳本it
cmake_minimum_required(VERSION 3.5)io
# 設置默認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標誌將使得當前目錄以及子目錄下全部的編譯標誌都爲該標誌。
下面這篇文章還包含一些其餘編譯命令。