我在CentOS 7上的NetBeans 8中工作,使用OpenAD更改一些旧的fortran代码,以使用自动区分替换数字差异。 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?
答案 0 :(得分:3)
NetBeans没有编译顺序,它创建表示依赖图的Makefile
。默认图表只是最终的可执行文件,具体取决于您的每个来源。
可以通过“项目”选项卡中每个源的上下文菜单添加每个源的附加依赖项;选择“Properties”,然后在Categories中选择“Fortran Compiler”,Input部分包含Additional Dependencies字段。该字段是以空格分隔的列表。您可能希望将配置选择器(位于“文件属性”对话框的顶部)更改为“<所有配置>”。如果缺少“项目”选项卡,则可以从菜单栏项目窗口▶︎项目中打开它。
要使编译器找到.mod
文件,Additional Dependencies字段必须包含相应的.o
文件,而不是源文件。附加依赖项中的条目似乎是相对于项目根目录的路径; .o
文件的路径取决于哪个配置处于活动状态(默认情况下为“Debug”或“Release”之一)。附加依赖项字段中允许使用Makefile变量,因此您可以使用${OBJECTDIR}
作为配置相关前缀,并且路径的其余部分与源文件的路径匹配。
在我的项目中,我有$project/src
中的源代码和$project/src/OpenAD
中的OpenAD文件。有三种情况需要添加附加依赖项:
${OBJECTDIR}/src/OpenAD/OAD_active.o
${OBJECTDIR}/src/OpenAD/OAD_active.o ${OBJECTDIR}/src/OpenAD/w2f__types.o
${OBJECTDIR}/src/OpenAD/w2f__types.o