[英]ocamlbuild: Nothing to be done for `all'
我在makefile
使用ocamlbuild
构建代码,并希望在发生代码更改时重新编译。 但make
错误消息的回报: make: Nothing to be done for `all'.
我的makefile
代码:
all: test1 test2
test1:
ocamlbuild $(INCLUDES) $(FLAGS) $(TEST1_BYTE)
mv $(TEST1_BYTE) test1.out
test2:
ocamlbuild $(INCLUDES) $(FLAGS) $(TEST2_BYTE)
mv $(TEST2_BYTE) test2.out
clean:
rm -f test1.out test2.out
rm -rf _build
我希望make
可以重新编译而不是make clean; make
make clean; make
。 它只能与make clean; make
make clean; make
了。
将您的目标设为伪造,然后make
实用程序将始终重建它们。 ocamlbuild将使用OCaml基础结构的所有知识来跟踪依赖关系,并且永远不会重建任何不必要的东西。 这是声明目标伪音的方法,将其添加到Makefile中
.PHONY: test1 test2
同样,您似乎仍在学习make和ocamlbuild实用程序,并且鉴于您将花费时间在学习工具上,因此最好将精力集中在非传统的东西上。 虽然习惯于制作可以被认为是有用的,但ocamlbuild
工具或多或少不推荐使用较新的, 沙丘的并且记录得更好。 这很简单,只需创建一个名为dune
的新文件,并将以下内容放在其中,
(executable
(name test1))
(executable
(name test2))
现在,您可以使用dune build test1.exe
构建目标。 对于那些不知道如何调用dune
人,您仍然可以礼貌地创建Makefile。 和往常一样,不要忘记在makefile中使目标成为伪造。
这个Makefile特别指出test1
和test2
依赖任何内容。 只要它们都存在,make就会说无事可做。
我对ocamlbuild
,但我怀疑您应该单独使用它,而不是将其与make结合使用,make是一个单独的(非常灵活,但是非常旧的)构建系统。
就其价值而言,在我看来,许多当前的OCaml开发人员都在为构建系统转换为沙丘。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.