我正在构建一些使用 Imakefiles 的软件,目前不受支持。该软件确实有一个 Imake.tmpl 文件。它位于(相对于顶级目录)config/cf/Imake.tmpl 中。
由于该软件的子目录包含我输入的其他 Imakefiles(以下这个手册页):
xmkmf -a . .
第一个点表示顶级目录,第二个点表示当前目录。
我收到这个错误:
mv -f Makefile Makefile.bak
imake -I./config/cf -DTOPDIR=. -DCURDIR=.
In file included from Imakefile.c:34:0:
./config/cf/Imake.tmpl:33:0: fatal error: site.def: No such file or directory
#include <site.def>
^compilation terminated.
imake: Exit code 1.
Stop.
site.def 文件确实存在,并且位于 config/project/site.def 下。
这是由 imake 生成的 Imakefile.c 的内容。当 imake 完成执行时,该文件将被删除,但可以通过创建到该文件的链接来保留它。
/* imake - temporary file */
#define DefaultOSName Linux 4.13.0-36-generic x86_64
#define DefaultOSMajorVersion
#define LinuxDebian 4
#define LinuxInfoMagic 5
#define LinuxKheops 6
#define LinuxPro 7
#define LinuxRedHat 8
#define LinuxSlackware 9
#define LinuxTurbo 10
#define LinuxWare 11
#define LinuxYggdrasil 12
#define DefaultLinuxDistribution LinuxDebian
#define DefaultLinuxDistName Debian
#define HasGcc 1
#define HasGcc2 1
#define HasGcc3 1
#define GccMajorVersion 5
#define GccMinorVersion 2
#define INCLUDE_IMAKEFILE </tmp/IIf.j7V6mk>
#define IMAKE_TEMPLATE "Imake.tmpl"
#include IMAKE_TEMPLATE
任何建议,将不胜感激。
答案1
注意:我不是该软件的普通用户imake
,也没有真的非常了解构建系统的情况应该上班。
从错误中可以清楚地看出,imake
正在寻找要包含在 下的文件config/cf
,但该site.def
文件位于config/project
.
黑客可以将site.def
文件从当前位置符号链接到config/cf
,或者在该位置创建文件的副本。
但这是一种黑客攻击,我确信您正在构建的软件没有它也可以正确构建。您应该查阅该软件的文档。可能xmkmf
需要在另一个目录中运行,或者Imakefile
可以轻松修改其中一个文件以-I
向项目添加附加标志。