我想在 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
的变量。
解决 方案:
前面定义变量:
integer ONETWOTHREE ONETWOTHREE = 5
不要使用
ONETWOTHREE
而是实际值。整数示例:-DMY_FLAG=123
以便相应的行将是
write(*,*) 123
当然,如果您能在此处向我们提供使用预处理器背后的意图,那将很有用。