在 Fortran 中使用 cmake add_definition 值



我想在 CMake 调用中包含诸如-DMY_FLAG=ONETWOTHREE之类的标志,即make .. -DMY_FLAG=ONETWOTHREE,并在 fortran 代码中获取MY_FLAG的值。我正在使用add_definitions("-DMY_FLAG=${MY_FLAG}")MY_FLAG传递给make.

目前,当我做类似
write(*,*) MY_FLAG

我收到此编译器错误:
Error: Symbol 'ONETWOTHREE' at (1) has no IMPLICIT type

是否可以将-D标志转换为 fortran 中的类型?看起来MY_FLAG在编译时以某种方式定义,但它没有类型。

使用预处理器时,最终的源文件必须是有效的 Fortran。在目前情况下,

write(*,*) ONETWOTHREE

无效,因为没有名为ONETWOTHREE的变量。

解决 方案:

  1. 前面定义变量:

    integer ONETWOTHREE
    ONETWOTHREE = 5
    
  2. 不要使用ONETWOTHREE而是实际值。整数示例:

    -DMY_FLAG=123
    

    以便相应的行将是

    write(*,*) 123
    

当然,如果您能在此处向我们提供使用预处理器背后的意图,那将很有用。

最新更新