我正在将一个项目从简单的Makefiles迁移到CMake,以添加对多个编译器(gfortran + ifort)和操作系统(Windows + Linux)的支持.当我完成整个过程时,我正在尝试简化CMake行为并为用户提供一些额外的功能.
在对可能的操作系统和使用的编译器组合进行规范化和调整编译器选项之后,添加用户定义的构建类型"DEBUGVERBOSE"并启用所有检查和警告似乎是合理的.因为我们正在处理非常古老的Fortran 77代码,所以这些设置会生成> 3000个警告,这就是为什么我不想在标准的Debug构建类型中包含所有警告的原因.对于将来的代码清理和调试,它似乎是合适的.
我想将这个用户定义的构建类型"DEBUGVERBOSE"添加到Visual Studio 2012中的可用配置列表中.同时我想摆脱cmake生成的构建类型"MinSizeRel"和"RelWithDebInfo"来简化用户界面(因为我们从不使用这些配置).
根据CMake-Wiki - 如何使用定制的扩展构建模式?我按如下方式设置我的构建类型:
# Set Project Name and supported Languages(optional)
project (s4 Fortran C)
# Set Version Number
set (S4_VERSION_MAJOR 1)
set (s4_VERSION_MINOR 0)
# Set Source Language
enable_language (Fortran)
...
if(WIN32)
# Release flags
set(CMAKE_Fortran_FLAGS_RELEASE " ${CMAKE_Fortran_FLAGS_RELEASE} /D__WIN_intel__ /assume:byterecl")
# Debug Flags
set(CMAKE_Fortran_FLAGS_DEBUG " ${CMAKE_Fortran_FLAGS_DEBUG} /D__WIN_intel__ /assume:byterecl /Od /warn:all /check:all
/warn:notruncated_source /warn:nodeclarations /warn:nounused")
# verbose Debug flags (user-defined build type)
set(CMAKE_Fortran_FLAGS_DEBUGVERBOSE " /debug:full /dbglibs …Run Code Online (Sandbox Code Playgroud)