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
)。