C “如何写作”;安装";Makefile中的目标

C “如何写作”;安装";Makefile中的目标,c,makefile,C,Makefile,我不熟悉Makefile,喜欢在Makefile中编写install目标。我的Makefile将从另一个Makefile调用,如下所示: DESTDIR=$(DIR_A) BINDIR=/dir_b make -C $(CURDIR)/xxxx/yyy all 其中,/xxxx/yyy是我的Makefile所在的位置 我的Makefile将生成两个我喜欢安装的二进制文件,即install,我的意思是将这两个二进制文件复制到特定目录(BINDIR)并使其可执行 如果我的2个二进制文件是在/aaa

我不熟悉
Makefile
,喜欢在
Makefile
中编写
install
目标。我的
Makefile
将从另一个
Makefile
调用,如下所示:

DESTDIR=$(DIR_A) BINDIR=/dir_b make -C $(CURDIR)/xxxx/yyy all
其中,
/xxxx/yyy
是我的
Makefile
所在的位置

我的
Makefile
将生成两个我喜欢安装的二进制文件,即install,我的意思是将这两个二进制文件复制到特定目录(
BINDIR
)并使其可执行

如果我的2个二进制文件是在
/aaaa/bbbb/bin
文件夹中生成的,那么在这种情况下,我应该如何编写
安装
目标?

“安装”将是一个“虚假”目标。我强烈建议使用实用工具
install
,而不是
cp
chmod

.PHONY: install
install:
    install -m 557 /aaaa/bbbb/bin/first /aaaa/bbbb/bin/second $BINDIR

现在,您可以执行
makeinstall

查看“maninstall”,因为StartMakefile没有“标记”,只有规则。阅读教程应该会有所帮助(GNU make附带了一个)。@Olaf它有“目标”。规则是用于构建目标的。我正在测试它,并添加了一个虚拟文件夹作为目标。我确实安装了“install:mkdir temp_dir install-m 755/aaaa/bbbb/bin/first temp_dir”``但是,我只看到“install”是最新的,我没有看到创建的temp_dir文件夹。你知道为什么吗?事实上,有些奇怪的事情正在发生。我给我的二进制文件(如/cccc/dddd/bin/first)提供了一个错误的路径,它不存在。makeinstall仍然返回“安装是最新的”。为什么不返回错误?在处理make文件时,查看它们的实际布局非常重要。你能把你的档案作为问题的一部分吗?我确实尝试了我的make文件,并向其中添加了
mkdir
,一切正常。请将
install
目标添加到
.PHONY
!测试:
touch install&&make install
-也许你会感到惊讶!:)我认为
install
的要求应该是
/aaa/bbb/bin/first
../second
(如果它们不存在,您希望复制什么?)。请扩大你的答案,因为它不复杂。@uzsolt不同意。虚假。不同意安装(
maninstall
)。