在GCC编译的项目中,
g++
和一个嵌套库与gcc
编译?使用CMake,通常建议做一个"out of source" build。在项目的根目录中创建CMakeLists.txt
。然后从项目的根目录:
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make
对于Debug
(再次来自项目的根目录):
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
Release
/ Debug
将为您的编译器添加适当的标志。还有RelWithDebInfo
和MinSizeRel
构建配置。
您可以通过CMakeLists.txt
和CMAKE_C_FLAGS_DEBUG
变量修改/添加CMAKE_C_FLAGS_RELEASE
中的标志,例如:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
有关详细信息,请参阅CMAKE_BUILD_TYPE。
至于你的第三个问题,我不确定你究竟在问什么。 CMake应该自动检测并使用适合您不同源文件的编译器。
有关调试/释放标志,请参阅CMAKE_BUILD_TYPE
变量(将其作为cmake -DCMAKE_BUILD_TYPE=value
传递)。它需要像Release
,Debug
等值。
http://cmake.org/Wiki/CMake_Useful_Variables#Compilers_and_Tools
cmake使用扩展名来选择编译器,所以只需命名你的文件.c。
您可以使用各种设置覆盖它:
例如:
set_source_files_properties(yourfile.c LANGUAGE CXX)
用g ++编译.c文件。上面的链接还说明了如何为C / C ++选择特定的编译器。
而不是直接操纵CMAKE_CXX_FLAGS
字符串(可以使用string(APPEND CMAKE_CXX_FLAGS_DEBUG " -g3")
btw更好地完成),你可以使用add_compiler_options
:
add_compile_options(
"-Wall" "-Wpedantic" "-Wextra" "-fexceptions"
"$<$<CONFIG:DEBUG>:-O0;-g3;-ggdb>"
)
这会将指定的警告添加到所有构建类型,但只会给DEBUG
构建的给定调试标志。请注意,编译选项存储为CMake列表,它只是一个用分号;
分隔其元素的字符串。
// CMakeLists.txt:发布
set(CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "" FORCE)
// CMakeLists.txt:debug
set(CMAKE_CONFIGURATION_TYPES "Debug" CACHE STRING "" FORCE)
如果你想构建一个不同的配置而不重新生成使用你也可以运行cmake --build {$PWD} --config <cfg>
对于多配置工具,选择<cfg>
ex。 Debug,Release,MinSizeRel,RelWithDebInfo
https://cmake.org/cmake/help/v2.8.11/cmake.html#opt%3a--builddir