2011-11-02 64 views
12

我一直在使用CMake和C++來構建庫和可執行文件,並且希望使用相同的go編程語言如何讓CMake使用go編程語言?

我需要採取哪些步驟來配置CMake,以便使用go編程語言?

本質上,我的編譯器是6g,它產生一個編譯的foo.6 - 我通過6l foo.6發送給鏈接器,我完成了。我有編譯器和鏈接器已經建立和安裝。

顯然,我可以爲此編寫一個簡單的Makefile,但在整個項目中使用CMake會很好。

TIA的任何建議,可以幫助我開始。

回答

16

您可能希望實施CMake對Go的支持。粗略地講它涉及到以下步驟:

  1. 創建CMakeDetermineGoCompiler.cmake模塊,它會發現去 編譯當前系統。
  2. 創建CMakeGoCompiler.cmake.in - 一個 模板,它將由CMakeDetermineGoCompiler配置。

  3. 創建CMakeTestGoCompiler.cmake,模塊,將編譯 簡約歸源,以檢查是否編譯器的工作原理。

  4. 創建CMakeGoInformation.cmake,這將設置一些語言相關 變量(CMAKE_GO_LINK_EXECUTABLE等)

這些東西應該放在CMAKE_MODULES_DIR。作爲參考,您可以看看如何實現Java/CXX支持。或者,如果不想混淆這樣的內部東西,你可以通過創建一個宏()來解決你的任務,這會創建一堆自定義目標/命令(參見add_custom_ {target,command}()文檔)。

+0

tyvm - 我會看看! – kfmfe04

+1

非常感謝!我一直在尋找這個簡單的信息兩個星期,這是令人沮喪的,因爲在cmake的Modules文件夾中有這麼多的文件,如果你只是想開始小,它會變得混亂。不管怎樣,謝謝!真棒回答! –

+0

哇!我希望一年前我剛開始嘗試做這件事時找到了答案。寫得好的答案:) – DavidZemon

6

不使用CMake(或任何其他構建系統)符合您的最佳利益。

Go有一個簡單的內置方式來構建包:go build(這也使得go getgo install工作)。 go build按設計,不需要額外的工具,如make或cmake。

如果您使用CMake(或任何其他構建系統),您只會讓自己變得更加困難(如果您打算使用其他人開發的庫)或其他人(如果您打算開發旨在被他人使用)。

+3

我認爲這個例外是使用'gccgo'並將目標文件與現有的C,Fortran,Ada或C++項目相結合,它們已經使用CMake。 – Alexander

+1

或者構建像protobuffers這樣的中間文件,或者構建可供發佈的可分發tarball,或者基本上是人們似乎忘記的其他任務,實際上是爲那些實際編寫比「go get」可以處理的項目更復雜的項目。 –