我一直在使用CMake和C++來構建庫和可執行文件,並且希望使用相同的go編程語言。如何讓CMake使用go編程語言?
我需要採取哪些步驟來配置CMake,以便使用go編程語言?
本質上,我的編譯器是6g,它產生一個編譯的foo.6 - 我通過6l foo.6發送給鏈接器,我完成了。我有編譯器和鏈接器已經建立和安裝。
顯然,我可以爲此編寫一個簡單的Makefile,但在整個項目中使用CMake會很好。
TIA的任何建議,可以幫助我開始。
我一直在使用CMake和C++來構建庫和可執行文件,並且希望使用相同的go編程語言。如何讓CMake使用go編程語言?
我需要採取哪些步驟來配置CMake,以便使用go編程語言?
本質上,我的編譯器是6g,它產生一個編譯的foo.6 - 我通過6l foo.6發送給鏈接器,我完成了。我有編譯器和鏈接器已經建立和安裝。
顯然,我可以爲此編寫一個簡單的Makefile,但在整個項目中使用CMake會很好。
TIA的任何建議,可以幫助我開始。
您可能希望實施CMake對Go的支持。粗略地講它涉及到以下步驟:
創建CMakeGoCompiler.cmake.in - 一個 模板,它將由CMakeDetermineGoCompiler配置。
創建CMakeTestGoCompiler.cmake,模塊,將編譯 簡約歸源,以檢查是否編譯器的工作原理。
這些東西應該放在CMAKE_MODULES_DIR。作爲參考,您可以看看如何實現Java/CXX支持。或者,如果不想混淆這樣的內部東西,你可以通過創建一個宏()來解決你的任務,這會創建一堆自定義目標/命令(參見add_custom_ {target,command}()文檔)。
不使用CMake(或任何其他構建系統)符合您的最佳利益。
Go有一個簡單的內置方式來構建包:go build
(這也使得go get
和go install
工作)。 go build
按設計,不需要額外的工具,如make或cmake。
如果您使用CMake(或任何其他構建系統),您只會讓自己變得更加困難(如果您打算使用其他人開發的庫)或其他人(如果您打算開發旨在被他人使用)。
我認爲這個例外是使用'gccgo'並將目標文件與現有的C,Fortran,Ada或C++項目相結合,它們已經使用CMake。 – Alexander
或者構建像protobuffers這樣的中間文件,或者構建可供發佈的可分發tarball,或者基本上是人們似乎忘記的其他任務,實際上是爲那些實際編寫比「go get」可以處理的項目更復雜的項目。 –
tyvm - 我會看看! – kfmfe04
非常感謝!我一直在尋找這個簡單的信息兩個星期,這是令人沮喪的,因爲在cmake的Modules文件夾中有這麼多的文件,如果你只是想開始小,它會變得混亂。不管怎樣,謝謝!真棒回答! –
哇!我希望一年前我剛開始嘗試做這件事時找到了答案。寫得好的答案:) – DavidZemon