Makefile - 只需进行安装(复制文件),无需构建目标

时间:2012-09-25 16:02:02

标签: c makefile

我有一个简单的makefile项目,我只想让make install将文件复制到目标文件夹,即:

all:
   @echo "Nothing to build"

install:
   cp ./*.wav /usr/share/snd

my_custom_target:
   @echo "For testing purposes"

但是,每当我尝试构建任何目标时(例如:clean,all,install,my_custom_target等),每一个目标都会回显“Nothing to be done for 'clean'”,“Nothing to be done for 'all'”等。猜测是一个makefile项目至少需要构建一些东西(即:C / C ++文件等)。

有没有人对如何处理此事有任何建议?

谢谢。

1 个答案:

答案 0 :(得分:7)

这似乎表明make无法找到或无法正确解析您的Makefile。这个文件名叫什么?

另外,请确保每个规则中的命令(如cp ./*.wav /usr/share/snd)都以实际制表符为前缀,而不是空格。在您粘贴的示例中,它们仅以三个空格为前缀,但要make正确解析它们,它们需要以实际制表符为前缀。

要检查的另一件事是,是否存在名为allinstallmy_custom_target的文件。 Make不关心是否构建了一些C或C ++文件;规则可以做任何你想要的事情。但它确实检查是否存在与规则相同的文件,以及它是否比规则的依赖项更新。如果有一个文件,并且它比所有依赖项更新(或者没有依赖项,如本例所示),那么它将决定无所事事。为了避免这种情况,请添加.PHONY声明,以表明这些是虚假目标,并且与要构建的实际文件不对应;然后make将始终运行这些食谱,无论是否存在具有相同名称的最新文件。

.PHONY: all install my_custom_target