Skip to main content

自动生成 Fortran 依赖项

项目描述

依赖

构建状态 编解码器

用于自动生成 Fortran 依赖项的 python 脚本。

给定一组文件,fortdepend自动为程序和文件构建依赖图,并可以编写适合 Makefile 的依赖文件。fortdepend现在使用pcppPython 编写的预处理器,因此它可以确定在编译时实际使用哪些模块。

您甚至可以使用fortdepend来绘制模块依赖关系图(需要graphviz)!

ReadTheDocs上提供了完整的文档。

D. Dickinson 的原创剧本

安装

您可以使用 pip 安装 fortdepend:

pip3 install --user fortdepend

限制

fortdepend需要 Python 3。

fortdepend通过寻找匹配的program <name>/end program <name>and对来module <name>/end module <name>工作,因此不适用于仅在end没有适当标签的情况下使用的 Fortran 77 样式文件。

用法

基本用法:

fortdepend -o Makefile.dep

.f90这将查找以当前目录或当前目录结尾的所有文件,.F90并将输出写入Makefile.dep. 输出将是这样的:

test :  \
        moduleA.o \
        moduleB.o \
        moduleC.o \
        moduleD.o \
        programTest.o

moduleA.o :

moduleB.o :  \
        moduleA.o

moduleC.o :  \
        moduleA.o \
        moduleB.o

moduleD.o :  \
        moduleC.o

然后,您可以通过输入以下内容来获得一个基本的 makefile 工作Makefile

.f90.o:
    gfortran -c $<

test:
    gfortran $^ -o $@

include Makefile.dep

并且make test会以正确的顺序神奇地构建一切!

移动高级使用

您可以使用 指定预处理器宏-D并使用 搜索路径-I

fortdepend -DMACRO=42 -Isome/include/dir -o Makefile.dep

将根据通常的 C99 预处理器规则替换MACROwith的实例。42这可以用于有条件地某些模块或在编译时use更改哪个模块是d。use

完整的命令行参数:

$ fortdepend --help
usage: fortdepend [-h] [-f FILES [FILES ...]] [-D NAME[=DESCRIPTION]
                  [NAME[=DESCRIPTION] ...]] [-b BUILD] [-o OUTPUT] [-g] [-v]
                  [-w] [-c] [-e EXCLUDE_FILES [EXCLUDE_FILES ...]]
                  [-i IGNORE_MODULES [IGNORE_MODULES ...]]

Generate Fortran dependencies

optional arguments:
  -h, --help            show this help message and exit
  -f FILES [FILES ...], --files FILES [FILES ...]
                        Files to process
  -D NAME[=DESCRIPTION] [NAME[=DESCRIPTION] ...]
                        Preprocessor define statements
  -I dir                Add dir to the preprocessor search path
  -b BUILD, --build BUILD
                        Build Directory (prepended to all files in output)
  -o OUTPUT, --output OUTPUT
                        Output file
  -g, --graph           Make a graph of the project
  -v, --verbose         explain what is done
  -w, --overwrite       Overwrite output file without warning
  -c, --colour          Print in colour
  -e EXCLUDE_FILES [EXCLUDE_FILES ...], --exclude-files EXCLUDE_FILES [EXCLUDE_FILES ...]
                        Files to exclude
  -i IGNORE_MODULES [IGNORE_MODULES ...], --ignore-modules IGNORE_MODULES [IGNORE_MODULES ...]
                        Modules to ignore
  --skip-programs       Don't include programs in the output file
  -n, --no-preprocessor
                        Don't use the preprocessor

这是一个更高级的示例,说明如何fortdepend在您的 makefile 中使用:

# Script to generate the dependencies
MAKEDEPEND=/path/to/fortdepend

# $(DEP_FILE) is a .dep file generated by fortdepend
DEP_FILE = my_project.dep

# Source files to compile
OBJECTS = mod_file1.f90 \
          mod_file2.f90

# Make sure everything depends on the .dep file
all: $(actual_executable) $(DEP_FILE)

# Make dependencies
.PHONY: depend
depend: $(DEP_FILE)

# The .dep file depends on the source files, so it automatically gets updated
# when you change your source
$(DEP_FILE): $(OBJECTS)
    @echo "Making dependencies!"
    cd $(SRCPATH) && $(MAKEDEPEND) -w -o /path/to/$(DEP_FILE) -f $(OBJECTS)

include $(DEP_FILE)

如果任何源文件发生更改,这将自动重建依赖文件。如果您有很多文件并且需要对它们进行预处理,您可能不喜欢这样做!

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

fortdepend-2.1.0.tar.gz (24.2 kB 查看哈希)

已上传 source

内置分布

fortdepend-2.1.0-py2.py3-none-any.whl (18.1 kB 查看哈希

已上传 py2 py3