我想知道在尝试“制作”我的程序时如何找出变量被覆盖的位置。这是编译器错误:
Loading /home/tyler/Software/Cpp/Cpp_Libraries/PelePhysics/Submodules/amrex/Tools/GNUMake/comps/gnu.mak...
Loading /home/tyler/Software/Cpp/Cpp_Libraries/PelePhysics/Submodules/amrex/Tools/GNUMake/sites/Make.unknown...
Loading /home/tyler/Software/Cpp/Cpp_Libraries/PelePhysics/Submodules/amrex/Tools/GNUMake/packages/Make.sundials...
make: /home/tyler/Software/Cpp/Cpp_Libraries/PelePhysics/Submodules/amrex/Tools/F_scripts/findparams.py: No such file or directory
make: Warning: File 'tmp_build_dir/o/2d.gnu.EXE/AMReX_buildInfo.d' has modification time 26084 s in the future
make: *** No rule to make target '/Users/tfara/amrex/Src/Extern/SUNDIALS/AMReX_NVector_MultiFab.cpp', needed by 'tmp_build_dir/o/2d.gnu.EXE/AMReX_NVector_MultiFab.o'. Stop.
我相信我可以准确地告诉你问题所在:我之前开发过这个软件,在那台机器上,一个名为
AMREX_HOME
的变量被设置为 /Users/tfara/amrex/
。现在我在另一台机器上,AMREX_HOME
应设置为 /home/tyler/Software/Cpp/Cpp_Libraries/PelePhysics/Submodules/amrex/
。问题是 PelePhysics 和 AMREX 程序是巨大的、专业开发的软件包,当它们被制作时,包含了一个巨大的中间 makefile 链,我无法开始完全理解。
所以你可以从编译器错误中看到前三个“加载”使用了正确的
AMREX_HOME
变量。这是因为我在自己的 makefile 中设置了该变量。但在此过程中的某个地方,AMREX_HOME
变量被覆盖。我想让编译器告诉我谁正在尝试创建目标/Users/tfara/amrex/Src/Extern/(etc)
,以便我可以转到该 makefile 并适当地更新路径变量。
看起来您已将构建工件复制到新计算机上,包括自动生成的标头依赖项
.d
文件,其中包含生成这些文件的计算机上标头的路径。 .d
时间戳警告是确凿无疑的证据。
要解决此问题,请删除构建工件,尤其是这些
.d
文件。