2017-02-10 4 views
0

初心者は全面的に+ビジネスをリンクすることを理解しようとしています。なぜ私はいつものようにCGALライブラリを使って私のC++プログラムをビルドすることができず、それを構築するためにCMakeを使う必要がありますか?CMakeでCMakeを使用してC++プログラムをビルドする必要があるのはなぜですか?

その他の質問:私はIDEの中でCMakeを使ってビルドできますか? (例:Code :: Blocks?)

@Mike:これは私が読んで得たものです。CGAL documentationです。私は何かを誤解しましたか?

+2

[This](https://cmake.org/about/)は、CMakeが何であるかを説明しています。それは答えません。なぜ、どの図書館の著者がそれを使うのを選んだのですが、何が良いのかを教えてくれるのです。 CMakeはいくつかのIDEと互換性があります。 Code :: Blocksは、さまざまな理由から避けるべきIDEです。 – IInspectable

+1

あなたはlibakeとリンクするプログラムを構築するためにCMakeを使う必要があると思いますか? –

答えて

1

あなたが参照しているCGALのドキュメンテーションで多少間違いました。

CGAL開発者は、CGAL ソースパッケージのビルドシステムとしてCMakeを選択しました。これは一般的なビルドシステムです(クロスプラットフォームの移植性に優れています)。彼らはまた、CMakeを使ったサンプルプログラムの ビルディングを示しています。当然 以降の例はソースパッケージの一部です。また、 CMakeを使用して、CGALに依存する独自のプログラムを構築することをお勧めします。

彼らがCMakeを推奨し、彼らがすることを驚かせないほど十分です。 ただし、ライブラリーに依存するプログラムを作成する場合は、libfoo と入力してください。libfooが既にインストールされていて、プロジェクトで を使用することが前提です。どちらの意味:

  • libfooヘッダファイル - foo.h、何でも - あなたが書くとき、あなたのコンパイラ を見つけ、それらを読むことができるようにライブラリの プログラミング・インタフェースは、例えば、どこかのシステム上にある定義しますあなたのコードに#include <foo.h>

  • libfooバイナリ - libfoo.alibfoo.sofoo.libfoo.dlllibfoo.dylib、ケースは、お使いのOSに対応されるように - ライブラリの実装が含まれているシステム上のどこかでもあるので、 あなたのリンカはそれらを見つけることができるとあなたの プログラムのオブジェクトコードとリンクして、完全な実行可能ファイルにしてください。 (そして、動的な ライブラリの場合、ランタイムローダーがそれらを見つけることができるどこかの場所)。だから、

、限りあなたプログラムが関係しているの構築など、によってそこに置かかどうか、libfooヘッダファイルとバイナリが、彼らはあなたの システム上にある場所であることを得た方法で、すべての 問題ではありませんCMakeまたは妖精によって。彼らが であることだけが重要です。必要ならばプログラムをCMakeでビルドするか、好きな方法で をビルドすることができます。もちろん

あなたは libfooがすでにシステムにインストールされていないでプログラムを書くことを決めたとき、それはケースかもしれません。その場合は、 をインストールしてください。次に、 がインストールされていることを前提にプログラムを進めてください。

インストールするには、CGALライブラリとヘッダファイルが必要です。あなたのOSが提供するパッケージ のlibcgal開発パッケージをインストールするか、または をダウンロードしてインストーラを実行することで(Windows) (Linux/OS X)が正常に実行されます。 CGAL がどのように構築されているかを知る必要はありません。

何らかの理由で開発パッケージを入手できない場合や、技術的に興味がある場合は、 ライブラリをインストールする場合は、ビルドしてソースパッケージから をインストールする必要があります。ソースパッケージのビルドシステムは CMakeなので、CMakeでビルドしてインストールする方法を学ぶ必要があります。

CGAL は、あなただけのライブラリを使用しての日常的な要件の世話 を取る必要があり、あなた自身のプロジェクトで使用するために、インストールしたら: -

  • ライブラリのヘッダを見つけるためにどこにコンパイラに伝えますファイルの場合は、 で、デフォルトのインクルードディレクトリには含まれません。
  • リンカーにライブラリのリンクを指示します。
  • libaryを見つける場所をリンカに教えてください。デフォルトの検索ディレクトリの には含まれていません。あなたが行うかどうか

CMakeの、SConsは、Autotool群、メイクファイルで、プロジェクト 設定あなたのIDEまたは単に右のオプションを持つコマンドプロンプト であなたのコンパイラとリンカを実行するには、完全にあなた自身の選択であること。 (最後は が最も効率的に有益ですが、初心者が理解しようとしている場合 全体コンパイルとリンク業務)。

CGALサンプルプログラムは、CGAL を何らかの方法で事前にインストールしている限り、Code :: Blocksを使用して通常の ライブラリ依存関係の単純なプロジェクトとして構築できます。

+0

CGALの場合、cmakeはコンパイラが正しいコードを生成するために必要な余分なフラグ(gccの '-frounding-math')も渡します。いくつかの依存関係(boost、gmp、...)でヘッダーパスを追加します。ライブラリに使用されているものと互換性のあるABI(デバッグバイナリがリリースバイナリと互換性がないプラットフォーム上の問題)を使用してサンプルをコンパイルします。確かにこれは手作業で行うことができますが、必要なオプションのリスト全体がCGALによってまだ文書化されておらず、-Iフラグと-lフラグより少し長いです。 –

0

cmakeを呼び出すと、コードブロックジェネレータをコマンドラインで渡すことができます。それはあなたが使用する必要があるファイルを作成し、IDEで構築します。

関連する問題