我想知道在尝试“制作”我的程序时如何找出变量被覆盖的位置。这是编译器错误:
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
警告建议您将源目录及其中的构建工件复制tmp_build_dir
到新计算机上。您的 makefile 最终包含来自.d
该构建目录的自动生成的头依赖项文件,.d
文件包含生成这些文件的计算机上的头文件的路径,并且这些路径与您的新构建环境不匹配。要解决该问题,请执行以下任一操作:
make clean
通常应该这样做,否则rm -rf tmp_build_dir
会非常稳健。.d
文件并保留其余的构建工件find tmp_build_dir -name '*.d' -delete
。不过,其他构建工件可能仍包含原始构建环境的完整路径。