区分Debug 还是 Release 可通过判断变量CMAKE_BUILD_TYPE,此变量可设置为四种不同的值: Debug Release MinSizeRel RelWithDebInfo (使用 Release 编译并且可以使用调试器) 注: Release 编译有很多等级,如 O1, O2, O3, O3 为最高,O表示optimization优化。 此外,每个 Release 编译都会定义宏NDEBUG,Debug 编译一般会...
CMake中有一个变量CMAKE_BUILD_TYPE,可以取值枚举入下:Debug Release RelWithDebInfo 和 MinSizeRel 当这个变量值为Debug的时候,Cmake会使用变量CMAKE_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG中的字符串作为编译选项生成Makefile, 当这个变量值为Release的时候,工程会使用变量CMAKE_CXX_FLAGS_RELEASE和CMAKE_CFLAGS_...
如果CMAKE_CONFIGURATION_TYPES是Release,那么定义RELEASE=1; 否则什么都不定义 对于multi-config的generator,可以在生成工程阶段使用CMAKE_CONFIGURATION_TYPES来配置默认的生成类型,也可以编译的时候使用--config来执行到底选用Debug还是Release。 我们先来测试一下使用CMAKE_CONFIGURATION_TYPES来控制。 首先测试默认config的...
CMake预先内置了四种构建类型:Debug,Release,RelWithDebInfo,MinSizeRel,可以满足大部分的使用情况,并通过预置的变量CMAKE_BUILD_TYPE表示当前的构建类型,可以通过修改它的值来改变构建类型,变量的初始值为空,表示不指定任何构建类型。 下面我们使用不同的构建模式来编译一个简单工程。 CMakeLists.txt cmake_minimum_r...
PROJECT(main) CMAKE_MINIMUM_REQUIRED(VERSION2.6) SET(CMAKE_SOURCE_DIR .) SET(CMAKE_CXX_FLAGS_DEBUG"$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") SET(CMAKE_CXX_FLAGS_RELEASE"$ENV{CXXFLAGS} -O3 -Wall") AUX_SOURCE_DIRECTORY(. DIR_SRCS) ...
常用的CMake内置宏 CMAKE_PROJECT_NAME:当前项目的名称。 PROJECT_NAME:最近通过project()命令激活的项目名称。 CMAKE_C_COMPILER:C编译器的完整路径。 CMAKE_CXX_COMPILER:C++编译器的完整路径。 CMAKE_BUILD_TYPE:指定构建类型(比如Release或Debug)。 CMAKE_SOURCE_DIR:项目的顶层源目录。 CMAKE_CURRENT_SOURCE...
if 和 debug/release模式 交叉编译 区分不同的操作系统 参考 CMake CMAKE这几篇没有太深入研究它的原理,主要关注点在使用上。 接着看看Option和IF这两个能够做的一些事。 OPTION 开关 定义一个开关量。语法: option( "help string describing option" [initial value])...
mkdir Release cd Release cmake -DCMAKE_BUILD_TYPE=Release .. make 或者 mkdir Debug cd Debug cmake-DCMAKE_BUILD_TYPE=Debug..make 方式二:在CMakeLists.txt中设置 SET(CMAKE_BUILD_TYPE "Debug”) or SET(CMAKE_BUILD_TYPE "Release")
cmake编译 Debug和 Release CMake 中有一个变量 CMAKE_BUILD_TYPE ,可以的取值是 Debug Release Rel WithDebInfo 和 MinSizeRel。当这个变量值为 Debug 的 时候,CMake 会使用变量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作为编译选项生成 Makefile ,当这个 变量值为 Release 的时候,工程...