CMake 編譯選項設定

2021-10-09 08:29:00 字數 1640 閱讀 8138

在cmakelists.txt中可以通過修改cmake內建的環境變數來改變c或c++的編譯選項.

cmake_c_flags = 

cmake_c_flags_debug = -g

cmake_c_flags_minsizerel = -os -dndebug

cmake_c_flags_release = -o3 -dndebug

cmake_c_flags_relwithdebinfo = -o2 -g -dndebug

cmake_cxx_flags =

cmake_cxx_flags_debug = -g

cmake_cxx_flags_minsizerel = -os -dndebug

cmake_cxx_flags_release = -o3 -dndebug

cmake_cxx_flags_relwithdebinfo = -o2 -g -dndebug

等號右邊是通過在cmakelists.txt中列印對應變數得到的預設值。

對於c語言設定cmake_c_flags相關引數,c++語言設定cmake_cxx_flags相關引數。並且分為debug,release,minsizerel和relwithdebinfo四種型別。

以c++語言編譯選項為例:

cmake_cxx_flags_debug:編譯debug版本的時候會採用的編譯選項,預設只有乙個-g選項,包含除錯資訊;

cmake_cxx_flags_release:編譯release版本的時候採用的編譯選項,預設包-o3選項,該選項表示優化等級;

cmake_cxx_flags_minsizerel:主要減小目標檔案大小,選項-os就是這個作用;

cmake_cxx_flags_relwithdebinfo:包含除錯資訊的release版本,-o2和-g,優化的同時也包含了除錯資訊;

cmake_cxx_flags:這個選項沒有預設值;

顧名思義,當cmake在編譯專案的時候,選項為debug則會採用cmake_cxx_flags_debug選項,編譯release則會採用cmake_cxx_flags_release選項,因此,需要設定編譯選項的時候,在cmakelists.txt中設定這些變數就可以了。

實際上可以分別設定cmake_cxx_flags_debug和cmake_cxx_flags_release,如下:

set(cmake_cxx_flags_debug "$ -std=c++11 -wl,-rpath=../lib")

set(cmake_cxx_flags_release "$ -std=c++11 -g")

上面的設定兩個都有-std=c++11,這個選項是乙個公共的選項,不管是release還是debug都需要設定。這種情況還可以把公共的設定放在cmake_cxx_flags變數裡面,如下:

set(cmake_cxx_flags "$ -std=c++11")

set(cmake_cxx_flags_debug "$ -wl,-rpath=../lib")

set(cmake_cxx_flags_release "$ -g")

因為在最終編譯的時候的編譯選項不管是release還是debug都包含了cmake_cxx_flags這個變數。

CMake設定編譯選項的幾種方法

cmake c compiler 指定c編譯器 cmake cxx compiler 指定c 編譯器 cmake c flags 指定編譯c檔案時編譯選項,也可以通過add definitions命令新增編譯選項 在cmake指令碼中,設定編譯選項 配置編譯器 有如下三種方法 1 add compi...

cmake中新增 g編譯選項

在cmake 3.12之前,新增編譯選項可以如下方式新增 add definitions wall g 新增了之後,就相當於在編譯的時候加上了 wall g選項 沒加之前 gcc c main.c o test 新增之後,相當於 gcc g wall c main.c o test書中給出的示例如下...

cmake設定交叉編譯

要在linux x86 64平台編譯出linux aarch64的可執行檔案 so,需要對應平台的交叉編譯工具鏈,同時要在cmake中進行設定,通常是為指定平台設定乙個toolchain檔案,通常該檔案要包含以下資訊 可以看到,toolchain中包含了編譯器資訊 c complier cxx co...