21

私は自分のビルド システムを管理するために CMake を使用することにかなり慣れていないので、愚かでこれが悪い考えである場合は、お知らせください。

cmakelists.txt ファイルをセットアップできるようにしたいと思います。

project( ... )

ディレクトリの名前が自動的にプロジェクト名になります。あるプロジェクトのディレクトリ全体を別のプロジェクトの開始点としてコピーできると便利だからです。ただし、ディレクトリの名前を意味のある名前に変更することはよくありproject(name)ますが、cmakelists.txt ファイルの行を変更するのを忘れることが多く、ビルド環境で同じ名前の複数のプロジェクトを開いてしまい、混乱を招きます。

理想的には、ディレクトリ名にスペースが含まれている場合、それらはアンダースコアに置き換えられます。

CMakeはこれを行うことができますか? そして、私が見ていない何らかの理由でそれは悪い考えですか?

4

2 に答える 2

21

これを実現するには、CMakeLists.txt の先頭に次を追加します。

get_filename_component(ProjectId ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId})

使い捨てプロジェクトでこれを行うことに問題はありませんが、本番プロジェクトには通常、コマンドで明示的に設定される定義済みの名前があると思いますproject

「あるプロジェクトのディレクトリ全体を別のプロジェクトの開始点としてコピーする」と言うとき、コピーするときにビルドツリーを含めないと思いますか? CMakeは、移動中のビルド ツリーを実際には処理できません

于 2012-09-10T03:28:30.447 に答える