gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:24:43 25 4
gpt4 key购买 nike

我有一个简单的 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++ 文件等)。

有人对如何进行此操作有任何建议吗?

谢谢。

最佳答案

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

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

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

.PHONY: all install my_custom_target

关于c - Makefile - 只需安装(复制文件),无需构建目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com