使用 Makefile..sed 時發生錯誤

使用 Makefile..sed 時發生錯誤

應用程式正在嘗試配置

sudo make configure
(cd /opt/ioapi-3.2/ioapi   ;  sed -e 's|IOAPI_BASE|/opt/ioapi-3.2|' -e 's|LIBINSTALL||' -e 's|BININSTALL||' -e 's|IOAPI_DEFS||' -e 's|NCFLIBS|-L/opt/netcdf/lib -lnetcdff -L/opt/netcdf/lib -lnetcdf|' -e 's|MAKEINCLUDE|include /opt/ioapi-3.2/ioapi/Makeinclude|' -e 's|PVMINCLUDE|include  |' < Makefile..sed > Makefile )
/bin/sh: Makefile..sed: No such file or directory
make: *** [Makefile:211: configure] Error 1

我不明白命令的最後一部分應該做什麼,以及為什麼它會產生錯誤。

的輸出make -n configure是:

(cd /home/centos/ioapi-3.2/ioapi   ;  sed -e 's|IOAPI_BASE|/home/centos/ioapi-3.2|' -e 's|LIBINSTALL||' -e 's|BININSTALL||' -e 's|IOAPI_DEFS||' -e 's|NCFLIBS|-lnetcdff -lnetcdf|' -e 's|MAKEINCLUDE|include /home/centos/ioapi-3.2/ioapi/Makeinclude|' -e 's|PVMINCLUDE|include  |' < Makefile..sed > Makefile )
(cd /home/centos/ioapi-3.2/m3tools ;  sed -e 's|IOAPI_BASE|/home/centos/ioapi-3.2|' -e 's|LIBINSTALL||' -e 's|BININSTALL||' -e 's|IOAPI_DEFS||' -e 's|NCFLIBS|-lnetcdff -lnetcdf|' -e 's|MAKEINCLUDE|include /home/centos/ioapi-3.2/ioapi/Makeinclude|' -e 's|PVMINCLUDE|include  |' < Makefile..sed > Makefile )

答案1

查看項目Makefile.template的文件ioapic-3.2在 GitHub 上,很明顯,您看到的命令是使用變數sed的結果:makeSEDCMD

SEDCMD = \
-e 's|IOAPI_BASE|$(BASEDIR)|' \
-e 's|LIBINSTALL|$(LIBINST)|' \
-e 's|BININSTALL|$(BININST)|' \
-e 's|IOAPI_DEFS|$(IOAPIDEFS)|' \
-e 's|NCFLIBS|$(NCFLIBS)|' \
-e 's|MAKEINCLUDE|include $(IODIR)/Makeinclude|' \
-e 's|PVMINCLUDE|include  $(PVMINCL)|'

像這樣:

configure: ${IODIR}/Makefile ${TOOLDIR}/Makefile
    (cd $(IODIR)   ;  sed $(SEDCMD) < Makefile.$(CPLMODE).sed > Makefile )
    (cd $(TOOLDIR) ;  sed $(SEDCMD) < Makefile.$(CPLMODE).sed > Makefile )

正如您所看到的,它嘗試讀取一個名為Makefile.$(CPLMODE).sed.該CPLMODE變數被多次提及在評論中在 Makefile 中,但從未設定為預設值。

該變數的有效值為nocplcplpncf。儲存庫中的檔案README.txt說要自訂 Makefile,我必須假設這包括在專案的頂級目錄中建立Makefile.template名為的副本,然後對其進行修改。Makefile

看起來您只是還沒有對其進行所有必要的修改。

相關內容