CMAKE_CXX_FLAGS / CMAKE_C_FLAGS
在cmake脚本中,设置编译选项有两种方式:
1.1 add_compile_options命令
add_compile_options
命令添加的编译选项是针对所有编译器的(包括c和c++编译器)
#判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持
if(CMAKE_COMPILER_IS_GNUCXX)
add_compile_options(-std=c++11)
message(STATUS "optional:-std=c++11")
endif(CMAKE_COMPILER_IS_GNUCXX)
使用add_compile_options
添加-std=c++11
选项,是想在编译c++代码时加上c++11支持选项。但是因为add_compile_options
是针对所有类型编译器的,所以在编译c代码时,就会产生cc1.exe: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C等warning.
其实并不影响编辑,但是对于一些强迫症患者看着却很难受,因此通过set命令设置CMAKE_C_FLAGS
或CMAKE_CXX_FLAGS
变量即可消除warning.
1.2 set命令修改CMAKE_CXX_FLAGS /
CMAKE_C_FLAGS
set命令设置CMAKE_C_FLAGS
或CMAKE_CXX_FLAGS
变量则是分别只针对c和c++编译器的
#判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持
if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
message(STATUS "optional:-std=c++11")
endif(CMAKE_COMPILER_IS_GNUCXX)
PROJECT_SOURCE_DIR
PROJECT_SOURCE_DIR为包含PROJECT()的最近一个CMakeLists.txt文件所在的文件夹,如以下文件结构:
test
|
+-----build
|
+-----include
|
+-----lib
|
+-----src
|
+main.cpp
|
+CMakeLists.txt
|
+-----CMakeLists.txt
test/CMakeLists.txt文件内容为
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(test)
ADD_SUBDIRECTORY(src)
test/src/CMakeLists.txt文件内容为
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
#PROJECT(main)
在build中执行
cmake ..
(两个小数点别丢了)则PROJECT_SOURCE_DIR的值为(parent_path)/test,
取消#PROJECT(main)的注释,PROJECT_SOURCE_DIR的值为(parent_path)/test/src
CMAKE_INSTALL_FULL_INCLUDEDIR
安装输出的include目录的绝对路径
持续更新中...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)