web-dev-qa-db-ja.com

CMakeLists.txtの生成

C++ソースファイルとヘッダー。 Boostなどの外部ライブラリを使用する場合があります。 Windowsと* nixのバイナリを構築するプロセスに興味があります。

  • Makefiles(* nix)と.vcproj(Windows)は、コンパイルの順序、コンパイルオプションなどの仕様を指定してコンパイラーを呼び出します。

  • CMakeLists.txtは、CMakeがメイクファイルまたは.vcprojを構築し、ファイルの再帰検索、既知のライブラリとの自動リンケージ、インストーラー、ソースファイルで使用できる変数などの非常に役立つコマンドを使用するために使用できます...

指定されたオプションからCMakeLists.txtを生成する既存のツールはありますか?オプションは次のようになります:このフォルダーをスキャンしてライブラリーを作成し、次にこの他のフォルダーをスキャンして実行可能ファイルを作成し、Boostと自動的にリンクし、INSTALL.txtとREADME.txtを生成したユーザーフレンドリーなインストーラーを使用します。そのような非常に強力な何か。

3
vanna

私は最近CMakeを学び始めましたが、デルナンが彼のコメントで言及しているように、これらのスクリプトの作成を何らかのツールでさらにラップする意味はありません。あなたが解決しようとしている問題は、CMakeの目的とその存在理由です。

実際、あなたが言いたいことは、プロジェクトのCMakeLists.txtが実際に行うこととよく似ています(必要に応じて少し複雑なインストール部分がない場合)。

例えばフォルダーのソースをスキャンしてlibに変換するのは、ほんのいくつかのコマンドです。

cmake_minimum_required(VERSION 2.8)
project(YourProject)

# This is a built-in utility to grab all the source files from a specific
# location into a list
AUX_SOURCE_DIRECTORY(. LOG_SOURCES)

# This is all you need to do to tell CMake that a specific list of files
# should be built as a library (shared in this case)
add_library(Logging SHARED ${LOG_SOURCES})

上記はまだ他のライブラリを自動的にリンクしたり、コンパイラ設定を処理したりしていませんが、CMake-wayに頭を巻き始めれば、これらすべてが可能で比較的簡単です。

3