2011-11-02 11 views
12

私はC++でCMakeを使ってライブラリと実行可能ファイルをビルドしており、のgoプログラミング言語に同じものを使用したいと考えています。CMakeをgoプログラミング言語で動作させるにはどうすればよいですか?

CMakeがgoプログラミング言語で動作するように設定するにはどのような手順が必要ですか?

私のコンパイラは本質的に、コンパイルされたfoo.6を生成する6gです - 私は6l foo.6経由でリンカに送ります。私はコンパイラとリンカを既にビルドしてインストールしています。

明らかに、私はこれのための単純なMakefileを書くことができますが、CMakeをプロジェクト全体で一貫して使用するとよいでしょう。

TIA私が手伝ってくれるアドバイスはありますか?

答えて

16

GoのCMakeのサポートを実装したいかもしれません。

  1. 現在のシステムのための コンパイラを行く見つけるだろうCMakeDetermineGoCompiler.cmakeモジュールを作成します。大まかに言えば、それは、次の手順を必要とします。
  2. 作成CMakeGoCompiler.cmake.in - テンプレート(CMakeDetermineGoCompilerで設定される)。

  3. CMakeTestGoCompiler.cmake、コンパイラが動作するかどうかを確認するために シンプル行くのソースをコンパイルするだろうモジュールを作成します。

  4. は、いくつかの言語関連 変数設定します(CMAKE_GO_LINK_EXECUTABLEをし、その上で)

これらの事はCMAKE_MODULES_DIRに配置する必要がありますCMakeGoInformation.cmakeを作成します。参考までに、Java/CXXサポートの実装方法をご覧ください。

また、内部のものを混乱させたくない場合は、マクロ()を作成してカスタムのターゲット/コマンドを作成することでタスクを解決できます(add_custom_ {target、command}()ドキュメンテーション)。

+0

tyvm - 私は見ています! – kfmfe04

+1

ありがとうございました!私はこの2週間の簡単な情報を探していました。そして、cmakeのModulesフォルダには非常に多くのファイルがあり、ちょうど小さなものから始めたいのであれば、混乱してしまいます。とりあえずありがとう!素晴らしい答え! –

+0

うわー!私が最初にこれをやろうとしたとき、私はこの答えを1年前に見つけたことを願っています。よく書かれた答え:) – DavidZemon

6

CMake(または他のビルドシステム)を使用しないことが最も重要です。

Goには、パッケージを構築するための簡単な組み込みの方法があります(go getgo installも同様になります)。 go buildは、設計上、makeやcmakeのような追加のツールを必要としません。

CMake(または他のビルドシステム)を使用している場合は、他人が開発したライブラリを使用する場合や、他人によって使用される)。

+3

私は 'gccgo'を使って、既にCMakeを使用している既存のC、Fortran、Ada、またはC++プロジェクトとオブジェクトファイルを組み合わせるときは例外だと思います。 – Alexander

+1

protobuffersのような中間ファイルをビルドしたり、リリース用に配布可能なtarballをビルドしたり、基本的に人々が忘れてしまうような巨大な他のタスクが存在します。 –

関連する問題