cmake中新增 -g編譯選項

Achou.Wang發表於2020-10-08

在cmake 3.12之前,新增編譯選項可以如下方式新增

add_definitions("-Wall -g")

新增了之後,就相當於在編譯的時候加上了 -Wall -g選項

#沒加之前
gcc -c main.c -o test
#新增之後,相當於
gcc -g -Wall -c main.c -o test

書中給出的示例如下:

add_definitions(-DSomeSymbol /DFoo=Value ...)
remove_definitions(-DSomeSymbol /DFoo=Value ...)

但是到cmake 3.12之後,最好使用編譯選項專用的新增方式:

add_compile_definitions(SomeSymbol Foo=Value ...)

通過指令

$ cmake --version
cmake version 3.18.4

CMake suite maintained and supported by Kitware (kitware.com/cmake).

檢視自己的cmake版本,若是在3.12之後的版本最好使用add_compile_definitions函式,要是3.12之前的版本,只能使用add_definitions或者直接設定變數的方式進行

這裡給出一個CMakeLists.txt的小例子,這個小例子是在學習設計模式的時候編寫的一個用於編寫多個可執行小demo的cmake檔案,全部工程包括設計模式原始碼見:
23種設計模式cpp實現工程原始碼地址


# 針對cmake版本的要求
# cmake version 3.18.3
cmake_minimum_required(VERSION 3.5)

project(cppDesignPatterns)

add_definitions("-Wall -g")

# 開閉原則
add_executable(open_close_principle open_close_principle.cpp)
# 依賴顛倒原則
add_executable(reverse_dependencies reverse_dependencies.cpp)
# 懶漢式單例模式
add_executable(sluggard_singleton sluggard_singleton.cpp)
# 餓漢式單例模式
add_executable(hungry_singleton hungry_singleton.cpp)

#target_include_directories( PUBLIC ./../lib)

相關文章