ocamlbuild:“全部”无所事事
ocamlbuild: Nothing to be done for `all'
我在 makefile
中使用 ocamlbuild
来构建我的代码,并希望在有任何代码更改时重新编译。但是 make
returns 错误信息: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
。
这个 Makefile 明确指出 test1
和 test2
不依赖于任何东西。只要它们都存在,make 就会说无事可做。
我对 ocamlbuild
一无所知,但我怀疑您应该单独使用它而不是将其与 make 结合使用,make 是一个单独的(非常灵活,但非常古老的)构建系统。
就其价值而言,在我看来,许多当前的 OCaml 开发人员正在转向 dune 构建系统。
将目标设置为 phony 然后 make
实用程序将始终重建它们。 ocamlbuild 将使用 OCaml 基础结构的所有知识来跟踪依赖关系,并且永远不会重建任何不必要的东西。以下是如何声明你的目标虚假,将其添加到你的 Makefile
.PHONY: test1 test2
此外,您似乎仍在学习 make 和 ocamlbuild 实用程序,鉴于您将投入时间学习这些工具,最好将注意力集中在那些不是传统的东西上。虽然习惯 make 可能被认为是有用的,但 ocamlbuild
工具或多或少被更新的 dune 和更好的记录所弃用。这很容易,只需创建一个名为 dune
的新文件并将以下内容放在那里,
(executable
(name test1))
(executable
(name test2))
现在您可以使用 dune build test1.exe
构建您的目标。您仍然可以创建一个 Makefile 作为对那些不知道如何调用 dune
的人的礼貌。和往常一样,不要忘记在 makefile 中使您的目标虚假。
我在 makefile
中使用 ocamlbuild
来构建我的代码,并希望在有任何代码更改时重新编译。但是 make
returns 错误信息: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
。
这个 Makefile 明确指出 test1
和 test2
不依赖于任何东西。只要它们都存在,make 就会说无事可做。
我对 ocamlbuild
一无所知,但我怀疑您应该单独使用它而不是将其与 make 结合使用,make 是一个单独的(非常灵活,但非常古老的)构建系统。
就其价值而言,在我看来,许多当前的 OCaml 开发人员正在转向 dune 构建系统。
将目标设置为 phony 然后 make
实用程序将始终重建它们。 ocamlbuild 将使用 OCaml 基础结构的所有知识来跟踪依赖关系,并且永远不会重建任何不必要的东西。以下是如何声明你的目标虚假,将其添加到你的 Makefile
.PHONY: test1 test2
此外,您似乎仍在学习 make 和 ocamlbuild 实用程序,鉴于您将投入时间学习这些工具,最好将注意力集中在那些不是传统的东西上。虽然习惯 make 可能被认为是有用的,但 ocamlbuild
工具或多或少被更新的 dune 和更好的记录所弃用。这很容易,只需创建一个名为 dune
的新文件并将以下内容放在那里,
(executable
(name test1))
(executable
(name test2))
现在您可以使用 dune build test1.exe
构建您的目标。您仍然可以创建一个 Makefile 作为对那些不知道如何调用 dune
的人的礼貌。和往常一样,不要忘记在 makefile 中使您的目标虚假。