2

我正在尝试从 DTU 编译这个项目。该项目需要安装PETSc

我已将 PETSc 安装到/Users/hornymoose/petsc-3.13.3/

我已经从 GitHub 中提取了 zip 到/Users/hornymoose/dtu

DTU 项目makefile有以下几行:

include ${PETSC_DIR}/lib/petsc/conf/variables
include ${PETSC_DIR}/lib/petsc/conf/rules
include ${PETSC_DIR}/lib/petsc/conf/test

在这些行中,{PETSC_DIR}被替换为用户的 PETSc 安装目录。因此,我将这些行更改为:

include $/Users/hornymoose/petsc-3.13.3/lib/petsc/conf/variables
include $/Users/hornymoose/petsc-3.13.3/lib/petsc/conf/rules
include $/Users/hornymoose/petsc-3.13.3/lib/petsc/conf/test

为了编译代码,我make topopt在终端中编写。这样做会产生:

makefile:13: Users/hornymoose/petsc-3.13.3/lib/petsc/conf/variables: No such file or directory
makefile:14: Users/hornymoose/petsc-3.13.3/lib/petsc/conf/rules: No such file or directory
makefile:15: Users/hornymoose/petsc-3.13.3/lib/petsc/conf/test: No such file or directory
make: *** No rule to make target `Users/jhutopopt/petsc-3.13.3/lib/petsc/conf/test'.  Stop.

我已经回去手动检查了Users/hornymoose/petsc-3.13.3/lib/petsc/conf/variables, ...rules, 并且...test肯定存在并且没有错误。

为什么我会收到此错误?我是否在我的 中错误地指示了目录makefile?中的语法makefile不正确吗?

我确信有一个简单的解决方案,我对在 MacOS 中使用终端非常陌生。先感谢您!

4

1 回答 1

1

$路径中有一个:

include $/Users/hornymoose/petsc-3.13.3/lib/petsc/conf/variables
        ^

这导致/被视为变量,并且由于从未设置而扩展为空。运行make选项--warn-undefined-variables以获得关于这类事情的警告。也许在这一点上已经很明显了,但正确的行是:

include /Users/hornymoose/petsc-3.13.3/lib/petsc/conf/variables

您可以通过环境变量提供它,而不是手动替换 makefile 中的 PETSC_DIR(假设 PETSC makefile 还不错):

export PETSC_DIR=/Users/hornymoose/petsc-3.13.3
make topopt

...或者:

PETSC_DIR=/Users/hornymoose/petsc-3.13.3 make topopt

...或将其值传递给 make 调用:

make topopt PETSC_DIR=/Users/hornymoose/petsc-3.13.3
于 2020-07-11T09:08:03.193 回答