在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)
cmake中新增 fPIC編譯選項方法
relocation r x86 64 32 against text can not be used when a shared object recompile with fpic 分別驗證過以下二種方法 第一種 筆者所採用的,因需修改原始cmakelists.txt檔案,感覺不太方便,非常希望...
CMake 編譯選項設定
在cmakelists.txt中可以通過修改cmake內建的環境變數來改變c或c 的編譯選項.cmake c flags cmake c flags debug g cmake c flags minsizerel os dndebug cmake c flags release o3 dndebu...
cmake 編譯新增庫
xcode 同時需要使用itk o pencv vtk 等庫時,用cmake 解決方法 在你的cmakelist.tst檔案裡新增如下 相應的包,再用cmake生成工程即可 具體寫法如下 新增opencv包 set opencv dir users rf opencv 這裡是你的庫編譯後的位置,裡面...