CMakeLists.txt
次のように、いくつかの一般的なものを定義し、プロジェクト内のすべての成果物 (サブプロジェクト) の構成を呼び出すトップ レベルを持つ中規模のプロジェクトがあります。
add_subdirectory(components/A)
add_subdirectory(components/B)
add_subdirectory(components/C)
add_subdirectory(components/E)
アーティファクトは、静的/共有ライブラリまたは実行可能ファイルです (何らかの形で相互に依存しています)。この例では、実行可能ファイルは 1 つだけです: E
. qt4_wrap_cpp
MOC の処理にプレーン オールドを使用すると、すべてが完全に正常に構成およびビルドされます。
以下を先頭に追加して、(比較的) 新しいAUTOMOC機能に切り替える場合CMakeLists.txt
:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
静的/共有ライブラリのすべてのソースはAUTOMOC
問題なく編集されます。ただし、実行可能なターゲット (E
この例では) のソースは決してAUTOMOC
編集されません。
私は両方MSYS Makefiles
のNinja
ジェネレーターを試しましたが、どちらも単にAUTOMOC
「ing」のターゲットを作成せず、実行可能ファイルのソースに対してのみ作成します(静的/共有ライブラリターゲットAUTOMOC
の場合、「ing target」が追加されます)。
- すでにそれを経験した人はいますか?
- 原因は何ですか?
- 虫の匂いですか?
アップデート
原因がわかりました。議論はCMake メーリング リストにあります。