【问题标题】:Change fortran compile order in NetBeans 8在 NetBeans 8 中更改 fortran 编译顺序
【发布时间】:2015-07-30 00:58:37
【问题描述】:

我正在使用 CentOS 7 上的 NetBeans 8 更改一些旧的 fortran 代码,以使用 OpenAD 将数值微分替换为自动微分。 OpenAD 将一个带注释的 fortran 函数作为输入,并生成一个自动微分函数作为输出。该输出函数依赖于 OpenAD 提供的一些模块。

在将原始文件添加到 NetBeans 项目、生成 OpenAD 输出函数并将该输出及其依赖项添加到项目后,项目将不会构建。

Fatal Error: Can't open module file 'oad_active.mod' for reading at (1): No such file or directory

OAD_active.f90 是 OpenAD 插入和提供的依赖项之一。如果我先编译该文件,然后构建项目(不清理),则构建成功。

如何让 NetBeans 在构建过程中尽快编译 OAD_active.f90?

【问题讨论】:

  • Netbeans 使用哪个构建系统? Makefile或自定义的东西?您当前的配置如何?
  • 我不知道它使用什么构建系统,但它确实创建了一个名为 Makefile 的文件。我不确定您想了解我的配置,它主要是 NetBeans 的默认配置。
  • 很遗憾,我不了解 Netbeans。如果您只使用Makefile,我会告诉您在其中的某处添加一行<your_object_file>.o : OAD_active.o。但是如果Netbeans每次都重新创建Makefile,那就太麻烦了。检查“依赖项”的文档
  • NetBeans 确实每次都重新创建 Makefile(实际上是一组包含包含的文件),但跟踪它让我找到了正确的路径。谢谢!

标签: netbeans fortran netbeans-8 automatic-differentiation


【解决方案1】:

NetBeans 没有编译顺序,它创建表达依赖图的Makefiles。默认图表只是最终的可执行文件,具体取决于您的每个来源。

可以通过“项目”选项卡中每个源的上下文菜单添加每个源的附加依赖项;选择“属性”,然后在类别中选择“Fortran 编译器”,输入部分包含附加依赖项字段。该字段是一个以空格分隔的列表。您可能希望将配置选择器(在“文件属性”对话框的顶部)更改为“”。如果“项目”选项卡丢失,可以从菜单栏项“窗口”▶︎“项目”中打开。

要让编译器找到.mod 文件,附加依赖项字段必须包含对应的.o 文件,而不是源文件。 Additional Dependencies 中的条目似乎是相对于项目根目录的路径; .o 文件的路径取决于哪个配置处于活动状态(默认情况下,“调试”或“发布”之一)。 Makefile 变量允许在 Additional Dependencies 字段中使用,因此您可以使用 ${OBJECTDIR} 作为配置相关前缀,并且路径的其余部分与源文件的路径匹配。

在我的项目中,我的源代码位于 $project/src,OpenAD 文件位于 $project/src/OpenAD。在三种情况下,我必须添加附加依赖项:

  • 调用由 OpenAD 转换的函数的源:${OBJECTDIR}/src/OpenAD/OAD_active.o
  • OpenAD 转换生成的源:${OBJECTDIR}/src/OpenAD/OAD_active.o ${OBJECTDIR}/src/OpenAD/w2f__types.o
  • $project/src/OpenAD/OAD_active.f90:${OBJECTDIR}/src/OpenAD/w2f__types.o

【讨论】:

  • 对这个问题和这个答案都赞不绝口......我刚刚开始重新探索 Fortran......并且对 Fortran 模块非常感兴趣。我不得不多次在谷歌上找到这个......我找不到其他任何地方(甚至是 Netbeans 网站)来解释这一点。感谢@ShadSterling 创建了我在过去几周内多次重新发现的资源。
猜你喜欢
  • 2012-12-25
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 2013-08-14
  • 1970-01-01
相关资源
最近更新 更多