区分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_...
# debug模式下对输出文件名加_d后缀 # targets 输入参数,一组targetfunction(set_target_output_name targets)foreach(target ${targets})# 获取OUTPUT_NAME_DEBUG的值get_target_property(_output_name ${target}OUTPUT_NAME_DEBUG)if(_output_name)# 如果OUTPUT_NAME_DEBUG已经定义则直接在后面加_dset_target_p...
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) ADD_EXECUTABLE(main ${DIR_SRCS}) # CMAKE generated ...
if 和 debug/release模式 交叉编译 区分不同的操作系统 参考 CMake CMAKE这几篇没有太深入研究它的原理,主要关注点在使用上。 接着看看Option和IF这两个能够做的一些事。 OPTION 开关 定义一个开关量。语法: option( "help string describing option" [initial value])...
CMake预先内置了四种构建类型:Debug,Release,RelWithDebInfo,MinSizeRel,可以满足大部分的使用情况,并通过预置的变量CMAKE_BUILD_TYPE表示当前的构建类型,可以通过修改它的值来改变构建类型,变量的初始值为空,表示不指定任何构建类型。 下面我们使用不同的构建模式来编译一个简单工程。
但这意味着每次开关都需要编辑cmakelists文件,麻烦了不止一点。我们可以通过以下方法实现在执行cmake时通过携带参数直接控制LEE_DEBUG宏的ON和OFF 我们在cmakelists文件中,将options(LEE_DEBUG 1 ON)删去,如图所示 不作LEE_DEBUG的定义,但保留此宏决定的操作 ...
if(CMAKE_BUILD_TYPE MATCHES Debug) add_definitions(-DDEBUG) else() add_definitions(-DRELEASE) endif() add_executable(chp1 main.cpp) 也就是 当类型为Debug的时候添加宏DEBUG; 当类型为Release的时候添加宏RELEASE 同时我们把main.cpp修改为
【CMake】(3)预定义宏 常用的CMake内置宏 CMAKE_PROJECT_NAME:当前项目的名称。 PROJECT_NAME:最近通过project()命令激活的项目名称。 CMAKE_C_COMPILER:C编译器的完整路径。 CMAKE_CXX_COMPILER:C++编译器的完整路径。 CMAKE_BUILD_TYPE:指定构建类型(比如Release或Debug)。
很多时候我们用cmake编译第三方库时发现debug和release版本编译的库文件同名,使用起来非常不方便。在用cmake GUI客户端配置时,只需要新建如下配置项即可: CMAKE_DEBUG_POSTFIX # 含义为为DEBUG版本的库添加后缀比如d 配置结果 添加过程 这样编译的出来的DEBUG库就会自动添加d为后缀...