CMake日常随手记

CMAKE_BUILD_TYPE

指定 生成产物 的构建类型。

CMake具有许多内置的构建配置,可用于编译工程。 这些配置指定了代码优化的级别,以及调试信息是否包含在二进制文件中。
这些优化级别,主要有:
Release —— 不可以打断点调试,程序开发完成后发行使用的版本,占的体积小。 它对代码做了优化,因此速度会非常快
Debug ——调试的版本,体积大

MinSizeRel—— 最小体积版本
RelWithDebInfo—— 既优化又能调试

CMAKE_C(CXX)_FLAGS

通过修改CMake内置的环境变量来设置C(C++)的编译选项。
可以通过ADD_DEFINITIONS(-D…)向C/C++编辑器添加-D定义。

CMake 设置C++标准(例子)

# 检查编译标志是否支持
include(CheckCXXCompilerFlag)
# 这一行告诉CMake包含此函数以使其可用;INCLUDE<file>/<module>)用来载入文件或预定义的cmake模块,如果是模块,那么可以通过在变量CMAKE_MODULE_PATH中搜索这个模块
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
# 尝试/判断使用标志-std=c++11编译程序,并将结果存储在变量COMPILER_SUPPORTS_CXX11;CMake支持尝试使用传递给函数CMAKE_CXX_COMPILER_FLAG的任何标志编译程序。然后将结果存储在传入的变量中

# 添加标志,一旦确定编译是否支持标志,就可以使用标准的cmake方法将该标志添加到目标
if(COMPILER_SUPPORTS_CXX11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
   add_definitions(-DCOMPILEDWITHC11)
   message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
   add_definitions(-DCOMPILEDWITHC0X)
   message(STATUS "Using flag -std=c++0x.")
else()
   message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
# 告诉cmake在哪儿去找我们的.cmake文件

通过设置cmake变量设置文件生成路径

  1. CMAKE_ARCHIVE_OUTPUT_DIRECTORY:默认存放静态库的文件夹位置;
  2. CMAKE_LIBRARY_OUTPUT_DIRECTORY:默认存放动态库的文件夹位置;
  3. LIBRARY_OUTPUT_PATH:默认存放库文件的位置,如果产生的是静态库并且没有指定 CMAKE_ARCHIVE_OUTPUT_DIRECTORY 则存放在该目录下,动态库也类似;
  4. CMAKE_RUNTIME_OUTPUT_DIRECTORY:存放可执行软件的目录;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值