我找到了Scons,一种类似于Make的基于Python的构建语言。然而,我似乎找不到与这种类型的构建语言工具等效的 Clojure/LISP(尽管 LISP 似乎非常适合这项工作)。这样的工具是否存在,它位于哪里?
背景: 我正在考虑使用 Clojure/Leningen 作为潜在候选者来取代 Make 作为我正在从事的 C++ 项目的构建语言。这是值得的努力吗? Clojure 和/或 LISP 真的是 C++ 项目有用的构建语言吗?
我怀疑您会在 Clojure 世界中找到像 Make 这样简洁的东西,因为 Make 是根据其目的量身定制的。
然而,下一个最接近的可能是Babashka。以下是如何处理任务依赖性和修改时间的示例:
{:tasks {:requires ([babashka.fs :as fs])
:init (do (def target-dir "target")
(def jar-file "target/foo.jar"))
-target {:task (fs/create-dirs target-dir)}
jar {:depends [-target]
:task (when (seq (fs/modified-since jar-file
(fs/glob "src" "**.clj")))
(spit jar-file "test")
(println "made jar!"))}
uberjar {:depends [jar]
:task (println "creating uberjar!")}}}