摘自: http://www.cppblog.com/tx7do/archive/2010/08/19/124000.html 建立debug/release两目录,分别在其中执行cmake -DCMAKE_BUILD_TYPE=Debug(或Release),需要编译不同版本时进入不同目录执行make即可; Debug版会使用参数-g;Release版使用-O3 –DNDEBUG...
CMakeLists.txt:SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") 而执行命令 find * | xargs grep "O3" 后结果如下: CMakeCache.txt:CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUGCMakeCache.txt:CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUGCMakeFiles/main.dir/flags.make:CXX...
Release、Debug、MinSizeRel、RelWithDebInfo 是 CMake 内置的构建模式,可以通过 cmake -B build -DCMAKE_BUILD_TYPE=Release 来指定构建模式,其具体含义如下 Build ModeCompiler FlagsMeaning Release -O3 -DNDEBUG Optimized, no debug Debug -O0 -g Debug symbols enabled MinSizeRel -Os -DNDEBUG Optimized, ...
因此,在发布产品时,通常建议使用-O3或-O2选项进行优化,以获得更好的性能。 对于使用CMake和Xcode生成器的开发者来说,可以通过在CMakeLists.txt文件中设置相应的编译选项来控制优化级别。例如,可以使用以下命令将发布模式中的优化级别设置为-O0: 代码语言:txt 复制 set(CMAKE_CXX_FLAGS_RELEAS...
区分Debug 还是 Release 可通过判断变量CMAKE_BUILD_TYPE,此变量可设置为四种不同的值: Debug Release MinSizeRel RelWithDebInfo (使用 Release 编译并且可以使用调试器) 注: Release 编译有很多等级,如 O1, O2, O3, O3 为最高,O表示optimization优化。
(CMAKE_CXX_FLAGS_RELEASE "-O3") # 设置项目的版本号 set(VERSION_MAJOR 1) set(VERSION_MINOR 0) set(VERSION_PATCH 0) # 配置一个头文件,通过它来传递一些CMake设置到源代码中 configure_file( "${PROJECT_SOURCE_DIR}/Config.h.in" "${PROJECT_BINARY_DIR}/Config.h" ) #让CMake能够在指定的...
CMakeCache.txt:CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMakeCache.txt:CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMakeFiles/main.dir/flags.make:CXX_FLAGS = -O3 -Wall CMakeFiles/main.dir/link.txt:/usr/bin/c++ -O3 -Wall CMakeFiles/main.dir/main.cpp.o -o main -rdynamic CMake...
set(CMAKE_CXX_FLAGS_RELEASE \O3\ 5. 指定输出路径 可以使用CMake的变量来指定输出路径。例如,将可执行文件输出到bin目录:set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)6. 生成静态库或动态库 使用add_library指令可以生成静态库或动态库。例如,生成静态库:add_library(MyLibrary STATIC ...
>>建立debug/release两目录,分别在其中执行cmake -DCMAKE_BUILD_TYPE=Debug(或Release),需要编译不同版本时进入不同目录执行make即可; Debug版会使用参数-g;Release版使用-O3 –DNDEBUG >> 另一种设置方法——例如DEBUG版设置编译参数DDEBUG IF(DEBUG_mode) add_definitions(-DDEBUG) ENDIF() 在执行cmake时增...
project()在上面提到是指定当前项目的名称。而message()类似于printf用于答应信息。set()用于显示的定义变量,比如定义CMAKE_C_COMPILER变量保存arm平台C编译器的路径,定义CMAKE_BUILD_TYPE变量指定编译的是Release版本程序。 add_compile_options(-D_DEBUG)add_compile_options(-D_...