首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建Clojure蛋糕构建环境

构建Clojure蛋糕构建环境
EN

Stack Overflow用户
提问于 2011-12-12 04:28:06
回答 1查看 123关注 0票数 0

我有一个名为mr1的clojure应用程序;它的project.clj位于./mr1/,mr1.clj位于./mr1/src。

我不知道如何正确地构造目录、名称空间和project.clj文件,所以我可以使用cake bin构建二进制文件。

附件中是我当前的project.clj和mr1.clj的头部和尾部。

src/mr1.clj将fine加载到蛋糕repl中并执行。饼干箱生成一个不包含-main的mr1文件。

代码语言:javascript
复制
(defproject mr1 "0.0.1-SNAPSHOT"
  :description "TODO: add summary of your project"
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [org.clojure/tools.cli "0.1.0"]]
   :main mr1)

(ns mr1
    (:use [clojure.string :only [split]]
          [clojure.string :only [join]]))

。。。

代码语言:javascript
复制
(defn -main 
    [& args]
    (do
       (reset! grid-dim (prompt-for-grid-dim))
       (reset! mr1-pos (prompt-for-rover-pos 1))
       (let [moves (prompt-for-rover-moves)]
           (execute-each-move moves @mr1-pos))

       (reset! mr2-pos (prompt-for-rover-pos 2))
       (let [moves (prompt-for-rover-moves)]
           (execute-each-move moves @mr2-pos))


    )
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-12 05:20:28

正如我在回答您的first question时提到的,您必须启用名称空间的AOT编译。我在这里复制了这个答案,以防有人遇到同样的问题。

正如sample.project.clj文件所说,:main键应该有一个包含-main函数的命名空间作为赋值。所以你应该有这样的功能

代码语言:javascript
复制
(defn -main [& args]
  (do-things-you-want-to-do-on-program-start))

在mr1.clj中。另外,如果你想把你的程序作为一个独立的jar来使用,你必须将这个命名空间进行gen-classed。我的意思是你必须:

  1. 在名称空间定义中包括:gen-class选项,如下所示:

(ns mr1 (:gen- ...other )提前编译名称空间(AOT代表提前)。为此,您需要在project.clj的AOT编译的名称空间列表中指定您的名称空间:

(默认项目mr1“0.0.1-快照”...other定义...:aot mr1 :main mr1)

完成此操作后,您可以使用cake为您生成可执行jar。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8467204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档