我正在使用ParallelIO库,这是一个免费的软件库,用于通过类似于netCDF的API进行高性能计算(HPC)I / O。
在某些fortran代码中,我有一个名为piolib_mod.F90的文件开始:
!>
!! @file
!! @brief Initialization Routines for PIO
#define __PIO_FILE__ "piolib_mod.F90"
这会产生脱氧警告:
/home/ed/tmp/ParallelIO/src/flib/piolib_mod.F90:4: warning: Member __PIO_FILE__ (macro definition) of file piolib_mod.F90 is not documented.
但是无论我做什么,我都无法接受我对该宏文档的定义。我尝试过:
!> for debugging
#define __PIO_FILE__ "piolib_mod.f90"
还:
!> @def __PIO_FILE__ for debugging
#define __PIO_FILE__ "piolib_mod.f90"
我试图将这一行排除在脱氧处理之外:
!> @cond exclude
#define __PIO_FILE__ 'piodarray'
!> @endcond
但这也不起作用。
Doxygen可能与Fortran文件中的预处理器宏概念混淆了,但这对您来说只是21世纪,昂贵的超级计算机和1960年代的编程语言。
如何记录该预处理器与doxygen的定义?
答案 0 :(得分:1)
我完成此操作的方法是将* .F90文件预处理为* .f90文件,然后将* .f90文件用于Doxygen。
这是Makefile.am中的窍门:
id
在我的configure.ac中,我设置了Doxygen来读取我需要的Fortran文件:
# Doxygen does not cope well with pre-processor use in Fortran. So
# create .f90 files from .F90 files by running the C
# pre-processor. These will only be used by doxygen when --enable-docs
# is used at configure.
if BUILD_DOCS
BUILT_SOURCES += piodarray.f90 piolib_mod.f90 pionfatt_mod.f90 pionfget_mod.f90 pionfput_mod.f90 pionfatt_mod_2.f90 pionfget_mod_2.f90
piodarray.f90: piodarray.F90
$(CC) -E $< > $@
piolib_mod.f90: piolib_mod.F90
$(CC) -E $< > $@
pionfatt_mod.f90: pionfatt_mod.F90
$(CC) -E $< > $@
pionfget_mod.f90: pionfget_mod.F90
$(CC) -E $< > $@
pionfput_mod.f90: pionfput_mod.F90
$(CC) -E $< > $@
这一切都有效,现在我拥有了干净的双氧水,没有任何警告。 ;-)