2017-08-18 8 views
19

CMake、Qt、およびVisual Studioを使用しています。私たちのプロジェクトの多くはAUTOMOC ONadd_libraryに渡してautomocを実行するように設定されています。CMake 3.9はVisual Studioで "autogen"プロジェクトを作成しますか?

私たちは最近CMake 3.9.1にアップデートしました。そして、Visual Studioはすべてのautomocされたライブラリのための追加のプロジェクトを表示するようになりました。たとえば、我々のソリューションには「コア」プロジェクトと「コア_オートメーション」プロジェクトがあります。

(これはVS2015とVS2017の両方で発生する、とQt 5.8と5.9.1の両方)

これは、いくつかの厄介な影響がありますの多くを追加し、

  • プロジェクトのほぼ倍の数を視覚的なクラッタ。
  • UIを使用して個々のプロジェクトをビルドするときにautomocが実行されなくなり、特定のプロジェクトのビルドの問題をデバッグする際に微妙なバグが発生する可能性があります。

autogenの以前のCMakeの動作を復元する方法があるのか​​知っていますか?

少なくとも、自家用プロジェクトの視覚的混乱を減らすにはどうしたらいいですか?

+0

多分 'set_property(GLOBAL PROPERTY USE_FOLDERS ON)'は役に立ちますか? –

+0

CMakeのgitlabで[issue 17205](https://gitlab.kitware.com/cmake/cmake/issues/17205)をチェックしてください。この問題の '_autogen'部分を報告し、それに対処すると予想されるマージ要求にリンクします(現在は3.10.0リリースを対象としています)。 –

答えて

9

CMake v3.9ドキュメントによれば、AUTOGEN_BUILD_DIRを使用して、生成されたファイルを別のフォルダに移動できます。

<dir>CMAKE_CURRENT_BINARY_DIRあると<target-name>NAME

であるか、AUTOMOCプロパティから使用できます:

AUTOGEN_TARGETS_FOLDERができるグローバルプロパティをデフォルトで

はcmakeのは<dir>/<target-name>_autogenを使用していますグループ分けに使用するIDEでの自動ターゲット設定。 MSVSで。

グローバルプロパティAUTOGEN_SOURCE_GROUPを使用して、AUTOMOCによって生成されたファイルをIDEでグループ化することができます。 MSVSで。

これが役に立ちます。

+1

提案していただきありがとうございますが、それはあまり役に立ちません。 AUTOGEN_TARGETS_FOLDERは、生成されたファイル(たとえば、mocs_compilation.cpp)が格納される場所を設定します。 CMakeは依然として "_autogen"プロジェクトを作成します。 3.9より前に、CMakeはプロジェクトのプレビルドステップの一環としてmocを実行しました。今はautomoc'dプロジェクトごとに追加のプロジェクトを作成するようです。 –

6

これは、1つのフォルダ内のすべてのAUTOGENのプロジェクトを収集します。

set_property(GLOBAL PROPERTY USE_FOLDERS ON) 
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER AutoMoc) 

enter image description here

関連する問題