2009-05-19 38 views
2

我發現了一些關於在C++應用程序中嵌入Ruby的問題。幾乎所有的投票答案都是建議使用Lua。將Rake嵌入到C++應用程序中?或者LUA有湖嗎?

考慮到一個項目我腦海中將會更好地服務於已經在Rake中表達的語法(它是一個規則引擎),是否有任何簡單的方法將Rake嵌入到C++應用程序中,或者是否存在類似Rake的類Lua的模塊?

澄清:如果可能,我希望這是一個獨立的應用程序。它應該有最低限度的先決條件,因爲它將運行在一個相當無用的(Windows)操作系統上。

回答

3

有許多構建系統可以使用Lua,強烈依賴於Lua或甚至在Lua中實現。其中一些列在Lua User's Wiki

在Wiki中列出的人中,Bou受到Rake的啓發。它的作者觀察到,在項目開始的時候,「湖」這個名字已經被用於另一個構建系統,但沒有提供鏈接,所以我不知道那個可能與之有關的內容。從那時起,Bou已經更名爲Lake,並搬到了新家。

湖是Lua社區,史蒂夫多諾萬的經常貢獻者的創建。正如Bou所說的那樣,它在接近純粹的Lua中實現(它取決於LuaFileSystem用於文件系統訪問)。它不是用來創建Makefile或IDE項目文件的過濾器,而是直接根據Lua中編寫的項目描述來驅動編譯器。構建項目以DSL(域特定語言)描述,其中包括訪問所有Lua以處理特殊情況。

Lua的「官方」binary releases都來自一個叫做tecmake的系統,起源於Tecgraf,就像Lua本身一樣。 Tecmake在make之上實現,通過一個包裝shell腳本和一套執行其約定的常用Makefile規則。它適用於他們,但是我個人從來沒有能夠讓它在我的系統上運行。將LuaBinaries版本從techmake的怪癖中移出,目前正在進行中。

LuaRocks使用Lua來描述構建需求,幾乎完全寫在Lua中,並且旨在與分佈式應用程序集成,以便應用程序可以自我更新。據我所知,LuaRocks的目標之一是使項目建設能夠使用他們獨立於平臺的「搖滾」文件,並且使用LuaRocks構建個人項目肯定會使它更容易發佈,以便稍後進行更廣泛的分發。

而作爲後備,總能使用Lua作爲擴展makefile驅動構建的又一工具。我以這種方式使用它來處理我可能委託給awk或perl的預處理任務,例如從當前的fossil修訂版中收集詳細信息到我的構建項目中。

更新:

而且隨着時間的推移,知識提高。正如Victor T在評論中所觀察到的,史蒂夫的湖實際上是同一個名爲布的項目。很顯然,對「湖」這個名字的反對已經消失了,我根本沒有注意到它們是同一個工具。我編輯了原始答案及其更新,以更好地反映我目前的理解。

+0

我認爲'Bou'和'Lake'是指同一個項目。看起來史蒂夫多諾萬後來更加恰當地將它改名爲「湖」。 – greatwolf 2011-06-29 11:27:36

1

至少有兩個名爲「Lua Make」的項目(您可以在Google上找到),還有一些與Lua Rocks關聯的構建系統。目前尚不清楚Lua Rocks是否有用,但其他兩個似乎值得檢查。

相關問題