Fortran 依赖管理和动态 config-/documentfile 使用 "maven equivalent" 合并
Fortran dependency management and dynamic config-/documentfile merges using "maven equivalent"
我有一个主要用 FORTRAN90 编写的大型项目,其中包含一个核心模块和许多附加模块,这些模块也是用 FORTRAN90 编写的。在任何时候我都希望能够:
- 将核心模块与任意数量的模块打包在一起
- 创建一个合并核心配置和模块配置的新配置文件
- 合并来自核心和模块的各种乳胶文件
代码+配置+文档位于 SVN 中...
Can/shall MAVEN 用于此用例?
********* 更新 *******
@haraldkl:
好的,我会尝试详细说明,因为收集尽可能多的信息绝对符合我的兴趣 - 我非常感谢我收到的评论!
我的项目包含一个强制性的核心模块。为了添加附加功能,您可以 select 任意数量的附加模块。核心和每个模块都位于它们自己的目录中,并受 SVN 控制。对于给定的交付,我希望能够 select "core" 和任意数量的模块并计算依赖链,以便以正确的顺序构建模块,不幸的是,有时它们可能有交叉依赖。设置构建顺序后,我需要能够将来自 selected 模块的 属性 文件与 "core" 的 属性 文件合并,所以我结束了 -使用 assembled/aggregated 属性 文件,其中包含来自 "core" 和所有 selected 模块的聚合属性。乳胶文件也是如此:我想得到一份基于 "core" + selected 模块乳胶文件的组合文档,从而得到一个乳胶文件。
所以,最重要的是:解决方案类似于:
- 勾选 selected 模块以随交付一起使用(核心是强制性的,因此无需勾选)
- 点击"Assemble"(代码来自SVN)
- 解决方案计算正确的构建顺序
- 解决方案合并 属性-文件 -> "package.property"
- 解决方案合并乳胶文件 -> "document.latex"
目前我们在 UNIX 下使用 make,但我不确定 make 能够在多大程度上处理上面的 4 和 5。
完成!
这是我的看法:
我相信步骤 1 到 3 完全可以使用常用的配置工具来实现。此外,据我所知,第 4 步和第 5 步只是另一个构建任务,Make 没有理由不能这样做。我定期通过 Make 生成用于 LaTeX 处理的文件,然后 assemble 他们大多使用 latexmk。重点是如何 select 合并什么以及必须如何合并,您有点不清楚如何合并,配置系统应该处理什么。您的选择可能还取决于在第 3 步结束时应该做什么。是否应该实际编译代码,或者您是否需要编写一些依赖项的版本?
Unix 上的传统配置系统是autotools suite。但是,据我所知,它不支持开箱即用的 Fortran 依赖项识别,您需要在这方面进行增强。
autotools 的流行替代品是 CMake, which does include Fortran dependency resolution. It might best suite your needs as pointed out by casey, as it allows you to create various generators,因此例如您可以让它为您的 selection 文件生成适当的 Makefile。
Waf 为您提供了很大的灵活性来处理列表中的第 4 步和第 5 步,它还能够识别 Fortran 依赖项,但我认为,生成 Makefile 等文件并不那么直接就像在 CMake 中一样。这里的灵活性是因为您的 waf 脚本只是普通的 Python 脚本,因此您可以轻松地在工作流程中使用任何 Python 工具并以您想要的任何复杂方式描述步骤 4 和 5 .
Maven can compile Fortran 代码,虽然我对此没有任何经验,但我怀疑它是否也能为您提供自动的 Fortran 依赖项解析。据我了解,它不像其他工具那样适合您的设置。
Fortranwiki has some more tools, for example you could come up with your own environment building Makefiles and use makedepf90 生成依赖项。
我有一个主要用 FORTRAN90 编写的大型项目,其中包含一个核心模块和许多附加模块,这些模块也是用 FORTRAN90 编写的。在任何时候我都希望能够:
- 将核心模块与任意数量的模块打包在一起
- 创建一个合并核心配置和模块配置的新配置文件
- 合并来自核心和模块的各种乳胶文件
代码+配置+文档位于 SVN 中...
Can/shall MAVEN 用于此用例?
********* 更新 ******* @haraldkl: 好的,我会尝试详细说明,因为收集尽可能多的信息绝对符合我的兴趣 - 我非常感谢我收到的评论!
我的项目包含一个强制性的核心模块。为了添加附加功能,您可以 select 任意数量的附加模块。核心和每个模块都位于它们自己的目录中,并受 SVN 控制。对于给定的交付,我希望能够 select "core" 和任意数量的模块并计算依赖链,以便以正确的顺序构建模块,不幸的是,有时它们可能有交叉依赖。设置构建顺序后,我需要能够将来自 selected 模块的 属性 文件与 "core" 的 属性 文件合并,所以我结束了 -使用 assembled/aggregated 属性 文件,其中包含来自 "core" 和所有 selected 模块的聚合属性。乳胶文件也是如此:我想得到一份基于 "core" + selected 模块乳胶文件的组合文档,从而得到一个乳胶文件。
所以,最重要的是:解决方案类似于:
- 勾选 selected 模块以随交付一起使用(核心是强制性的,因此无需勾选)
- 点击"Assemble"(代码来自SVN)
- 解决方案计算正确的构建顺序
- 解决方案合并 属性-文件 -> "package.property"
- 解决方案合并乳胶文件 -> "document.latex"
目前我们在 UNIX 下使用 make,但我不确定 make 能够在多大程度上处理上面的 4 和 5。
完成!
这是我的看法:
我相信步骤 1 到 3 完全可以使用常用的配置工具来实现。此外,据我所知,第 4 步和第 5 步只是另一个构建任务,Make 没有理由不能这样做。我定期通过 Make 生成用于 LaTeX 处理的文件,然后 assemble 他们大多使用 latexmk。重点是如何 select 合并什么以及必须如何合并,您有点不清楚如何合并,配置系统应该处理什么。您的选择可能还取决于在第 3 步结束时应该做什么。是否应该实际编译代码,或者您是否需要编写一些依赖项的版本?
Unix 上的传统配置系统是autotools suite。但是,据我所知,它不支持开箱即用的 Fortran 依赖项识别,您需要在这方面进行增强。
autotools 的流行替代品是 CMake, which does include Fortran dependency resolution. It might best suite your needs as pointed out by casey, as it allows you to create various generators,因此例如您可以让它为您的 selection 文件生成适当的 Makefile。
Waf 为您提供了很大的灵活性来处理列表中的第 4 步和第 5 步,它还能够识别 Fortran 依赖项,但我认为,生成 Makefile 等文件并不那么直接就像在 CMake 中一样。这里的灵活性是因为您的 waf 脚本只是普通的 Python 脚本,因此您可以轻松地在工作流程中使用任何 Python 工具并以您想要的任何复杂方式描述步骤 4 和 5 .
Maven can compile Fortran 代码,虽然我对此没有任何经验,但我怀疑它是否也能为您提供自动的 Fortran 依赖项解析。据我了解,它不像其他工具那样适合您的设置。
Fortranwiki has some more tools, for example you could come up with your own environment building Makefiles and use makedepf90 生成依赖项。