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

Posted

技术标签:

【中文标题】Makefile - 只需进行安装(复制文件),无需构建目标【英文标题】:Makefile - Just make install (copy files), no target to build 【发布时间】:2012-09-25 16:02:01 【问题描述】:

我有一个简单的 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】:

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

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

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

.PHONY: all install my_custom_target

【讨论】:

以上是关于Makefile - 只需进行安装(复制文件),无需构建目标的主要内容,如果未能解决你的问题,请参考以下文章

linux ubuntu关于make makefile make clean

请教点简单的Makefile文件语法,高手请进

ssh 无密码登陆

cmake从入门到放弃

向大家推荐一个C/C++通用Makefile

Ubuntu上安装make命令并使用makefile文件简化操作