私のコメントを答えに変える
ソースファイルを収集するfile(GLOB ...)
はい、CMake は、file(GLOB ...)
コマンドを使用してソース ファイルを収集するときに、新しいソース ファイルまたは削除されたソース ファイルを認識しません。これは CMake の既知の制限です。このため、すべてのソース ファイルを個別にリストするように CMake プロジェクトを変更しました。便宜上、コマンドを使用してヘッダー ファイルを収集していますfile(GLOB ...)
。
CMake のfile()
コマンド ドキュメントからの引用:
ソース ツリーからソース ファイルのリストを収集するために GLOB を使用することはお勧めしません。ソースが追加または削除されたときに CMakeLists.txt ファイルが変更されない場合、生成されたビルド システムは CMake に再生成を要求するタイミングを認識できません。
CMakeCache.txt
再トリガー構成への削除
削除CMakeCache.txt
するだけでは、CMake 構成を再トリガーするには不十分な場合があります。問題 0014820: すべてのディレクトリを削除する必要があるCMakeCache.txt クレームのみを削除することについてユーザーに警告します。CMakeFiles
私の経験から、CMake 構成を再トリガーする最も信頼できる方法は、プロジェクトCMakeLists.txt
ファイルの 1 つに触れることです。
注: For CMake は、プロジェクトの CMake を再度便利に実行するためninja
のターゲットを追加します。rebuild_cache
ソース管理からの更新後の再トリガー
ソース管理から削除されたためにソース ファイルが削除された場合、ソース ファイルで引き続き使用できる回避策があるかもしれませんfile(GLOB ...)
。
たとえば、GIT を使用する場合、次を main に追加できますCMakeLists.txt
。
configure_file(${CMAKE_SOURCE_DIR}/.git/index ${PROJECT_BINARY_DIR}/git_index.tmp)
短所:各GIT操作(更新、コミットなど)の構成を再トリガーします。
いくつかの参照: