Makefile安装目标有时工作,有时不工作

时间:2012-12-27 09:18:50

标签: build open-source mono makefile monodevelop

我目前正在开发一个项目,该项目还应该提供一个打包到linux系统中的源包。由于我使用的是monodevelop,我使用了

mdtool generate-makefiles AudioCuesheetEditor.sln --simple-makefiles

生成makefile等。但是有一点问题。在某些系统上,运行最后一步时一切正常

make install

但有时候没有。输出然后说

[root@VMFedora17 Downloads]# make install
make[1]: Entering directory `/home/sven/Downloads'
make[1]: Leaving directory `/home/sven/Downloads'
make[1]: Entering directory `/home/sven/Downloads'
make pre-install-local-hook prefix=/usr/local
make[2]: Entering directory `/home/sven/Downloads'
make[2]: Leaving directory `/home/sven/Downloads'
make install-satellite-assemblies prefix=/usr/local
make[2]: Entering directory `/home/sven/Downloads'
mkdir -p '/usr/local/lib'
cp   bin/Release /usr/local/lib/AudioCuesheetEditor
cp: omitting directory `bin/Release'
make[2]: *** [/usr/local/lib/AudioCuesheetEditor] Error 1
make[2]: Leaving directory `/home/sven/Downloads'
make[1]: *** [install-local] Error 2
make[1]: Leaving directory `/home/sven/Downloads'
make: *** [install-recursive] Error 1

这是在安装了KDE的Fedora 17 Linux上运行的。在另一台Fedora 17 KDE上,一切都很完美。

有人可以帮助我,错误在哪里吗?

Makefile可以在这里找到:http://sourceforge.net/p/audiocuesheet/code/140/tree/trunk/Quellcode/AudioCuesheetEditor.make

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

从您的输出和您提供的链接中,我在以下代码段中找到了错误:

install-local: $(ASSEMBLY) $(ASSEMBLY_MDB)
    make pre-install-local-hook prefix=$(prefix)
    make install-satellite-assemblies prefix=$(prefix)
    mkdir -p '$(DESTDIR)$(libdir)/$(PACKAGE)'
    $(call cp,$(ASSEMBLY),$(DESTDIR)$(libdir)/$(PACKAGE))

我猜$(ASSEMBLY)是一个目录,但我不确定。没有参数-r的命令 cp 将不会递归复制目录。您可以尝试修改

$(call cp,$(ASSEMBLY),$(DESTDIR)$(libdir)/$(PACKAGE))

$(call cp,-r,$(ASSEMBLY),$(DESTDIR)$(libdir)/$(PACKAGE))

cp -r $(ASSEMBLY) $(DESTDIR)$(libdir)/$(PACKAGE)

此外,如果您想了解原件在一台机器上工作但在另一台机器上不工作的原因,您可以添加命令:

echo $(ASSEMBLY)
在上面的命令之前

查看它们的输出在不同的机器上是否不同。