2017-08-14 9 views
4

、関係する3つのステップがある:CMakeは./configureのステップと同じですか?私はUnixのシステムでは、コンパイルしてソースから何かをインストールすることを理解

1)./configure

2)make

3)make install

OpenCV from sourceのインストールを確認したところ、./configureのステップがなかったことに気づきましたが、ステップはcmakeでした。これはcmake./configureに相当するという考えを私に与えました。私はまた、cmakeMakefilesのようなビルドシステムを生成できることを読んでいます。それは./configureのステップのようなものです。

ただし、このarticle(最初の段落what is the difference?を参照)は、cmakeが実際のビルドも実行すると示しています。その場合、cmakeの後にOpenCVのインストールでmakeが指示されるのはなぜですか?また、cmakemakeを比べると、./configureではないことがよくあります。では、実際にはcmakeはどこに入りますか?

+0

CMakeがビルドを実行するとは言いません。おそらく、「選択したビルドシステムで実際のビルドを実行する」という部分を指しているのでしょうか? autotoolsの場合と同じように、コンパイルするために 'make 'やその他のジェネレータを実行する必要があります。 –

+0

はい。あなたが正しいです。私の「cmake」の理解は限られているので、私はその文を誤解したと信じています。 –

+1

そして、 'configure'(シェル)スクリプトを持っているBTWは、* NIX/Linuxの世界では*ルール*ではありません;-)ほとんどの場合、Autotoolsによって生成されます。厳密には、特定のプロジェクトで使用されているビルドシステムの問題です。純粋な 'Makefile'(手作業で書かれた)や他の(メタ)ビルドシステムを使用するたくさんのパッケージがあり、' configure'スクリプトはまったくありません。 – zaufi

答えて

3

はい、cmakeは、autotoolsの設定手順に似ています。ビルド自体は実行されませんが、ビルドに必要なファイル(Makefiles、Visual Studioプロジェクトなど)が生成されます。

CMakeのは--buildオプションを持っていますが、スタンドアロンのビルドツールとしてCMakeのを使用することはできませんので、このオプションはただ、基本的なビルドシステムを起動します。これは普通のMakefileとは異なります。なぜなら、あなたは手作業でそれらを書くことができるからですし、makeです。

+0

私は 'CMake'が' ./configure + autotools'よりはるかに多く使われているのを見ています。 'CMake'だけを学び、' autotools'をスキップするのは賢明でしょうか? –

+3

はい、そうだと思います。 AutotoolsはMakefileに固定されており、Windows上で実行するにはlinuxy環境が必要です。一方、CMakeは、VSプロジェクトやNMakeメイクファイルを生成することができます。これは、それを使用するクロスプラットフォームアプリケーションを開発することが本当に楽しいことです。 – arrowd

+0

ありがとう! –

1

あなたが言った記事は、CMakeとMakeをコンパイルするのは混乱します。私はメイクやMSBuildのようなビルドツールを区別創傷、およびCMakeのまたはAutotool群のようなビルドツール、用のファイルを生成するジェネレータまたはメタビルドツールを構築します。 Bothsツールは、Wafによって行われるように、1つに合併することができます。

古典的な構成スクリプトは、CMake呼び出しと同じ機能を持っています。サードパーティのライブラリを検索し、ビルドシステムをセットアップし、config headerを準備します。

GNUプロジェクトに加えて、CMakeはかなりの勢いを得ました。 KDEとBlenderはCMakeを使った大規模なプロジェクトです。 LLVMは過去2年間で変化し、Boostでもそれが切り替わると発表しました。

1

そして勝者の答えに補遺として:

CMakeのも、このモードについてインストールCMakeの有効・パッケージ;-) Check the docsを検索するためにpkg-configとして使用することができます。

CMakeのもCLI modeをサポートし、クロスプラットフォームな方法でファイルシステム操作を処理することができるので、;-) 「小さな/些細なクロスプラットフォームのスクリプトツール」とみなすことができる - 私はかなり満足していますこのモードでは、私はWindowsを学ぶ必要はありませんcmd.exeファイル/ディレクトリのコピー/移動/名前の変更/ &などのコマンドと私の "スクリプト"はLinuxとWindowsでうまくいきます...

server modeで使用することができますが、この機能は主にIDEがCMakeファイルの編集を適切にサポートするために使用します。

CMake(+ CPack)は、out-of-the-boxでプレーンアーカイブ(tarballs)のみをサポートするautotoolsを比較すると、ビルド結果としてさまざまなパッケージフォーマットを実行できます。私はRPM/DEB/MSI/EXEと、NuGetパッケージの作成に少し役立っていました。

関連する問題