【发布时间】:2016-09-13 04:09:39
【问题描述】:
在使用调试符号编译代码时,我通常还希望启用某些编译时和运行时检查,如下所示:
gfortran -c -o hello.o -g -O0 -Wall -fcheck-all -fbacktrace hello.f90
(是的,它是 Fortran,但我认为它可以与其他语言一样工作。)
如果我想用 Intel Fortran 编译器编译它,命令应该是这样的:
ifort -c -o hello.o -g -O0 -warn all -check all -traceback hello.f90
到目前为止,我发现在 CMake 中像这样编译的唯一方法是这样的:
IF(${CMAKE_Fortran_COMPILER_ID} MATCHES "GNU")
set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -Wall -fcheck=all -fbacktrace")
ELSEIF(${CMAKE_Fortran_COMPILER_ID} MATCHES "Intel")
set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -warn all -check all -traceback")
ELSE()
message(WARNING "Unable to determine Compiler ID: ${CMAKE_Fortran_COMPILER_ID}")
ENDIF(${CMAKE_Fortran_COMPILER_ID} MATCHES "GNU")
但这引入了我在开始使用 CMake 时想要避免的所有硬编码标志。有没有办法根据它们的作用添加编译器开关,例如“启用所有编译时警告”或“启用所有运行时检查”?
【问题讨论】:
标签: cmake