【cmake】cmake 编译选项设置
在cmakelists.txt
中可以通过修改cmake内置的环境变量来改变c或c 的编译选项.
编译选项相关的cmake 变量如下:
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 "${cmake_cxx_flags_debug} -std=c 11 -wl,-rpath=../lib")
set(cmake_cxx_flags_release "${cmake_cxx_flags_release} -std=c 11 -g")
上面的设置两个都有-std=c 11
,这个选项是一个公共的选项,不管是release还是debug都需要设置。这种情况还可以把公共的设置放在cmake_cxx_flags变量里面,如下:
set(cmake_cxx_flags "${cmake_cxx_flags} -std=c 11")
set(cmake_cxx_flags_debug "${cmake_cxx_flags_debug} -wl,-rpath=../lib")
set(cmake_cxx_flags_release "${cmake_cxx_flags_release} -g")
因为在最终编译的时候的编译选项不管是release还是debug都包含了cmake_cxx_flags这个变量。