我有一个简单的makefile项目,我只想make install将文件复制到目标文件夹,即:
all:
@echo "Nothing to build"
install:
cp ./*.wav /usr/share/snd
my_custom_target:
@echo "For testing purposes"
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试构建任何目标(即: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正确解析它们,它们需要以实际制表符为前缀.
还有一件事是检查是否有指定的文件all,install或my_custom_target.Make不关心是否构建了一些C或C++文件; 规则可以做任何你想要的事情.但它确实检查是否存在与规则相同的文件,以及它是否比规则的依赖项更新.如果有一个文件,并且它比所有依赖项更新(或者没有依赖项,如本例所示),那么它将决定无所事事.为了避免这种情况,添加一个.PHONY声明来表明这些是伪目标,并且不对应于要构建的实际文件; 然后make将始终运行这些配方,无论是否存在具有相同名称的最新文件.
.PHONY: all install my_custom_target
Run Code Online (Sandbox Code Playgroud)