gpt4 book ai didi

CMake 附加调试选项

转载 作者:行者123 更新时间:2023-12-02 09:23:55 24 4
gpt4 key购买 nike

当使用调试符号编译代码时,我通常还想启用某些编译时和运行时检查,如下所示:

gfortran -c -o hello.o -g -O0 -Wall -fcheck-all -fbacktrace hello.f90

(是的,它是 Fortran,但我认为它也可以与其他语言一样工作。)

如果我想使用英特尔 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 警告 API:coming soon .

讨论提出了诸如 add_compile_warningstarget_compile_warnings 之类的命令,遵循 add_compile_options 模型和 target_compile_definitions ,警告级别如下:

  • all(编译器特定的“all”,例如/Wall 或 -Wall);
  • 默认;
  • 无;
  • 一切(编译器可能出现的所有警告,如果没有这样的选项,则使用最高级别并明确显示一些警告)。

您可以研究建议的 API,并可能在讨论中暴露您未满足的需求。

关于CMake 附加调试选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39462092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com