Die CMake doc sagt über den Befehl file GLOB:Warum ist die cmake-Datei GLOB evil?
Wir empfehlen nicht GLOB eine Liste der Quelldateien von Ihrem Quellbaum zu sammeln verwenden. Wenn sich keine CMakeLists.txt-Datei ändert, wenn eine Quelle hinzugefügt oder entfernt wird, kann das generierte Build-System nicht wissen, wann CMake aufgefordert werden soll, neu zu generieren.
Mehrere Diskussionsthreads in der Web-Sekunde, die Quelldateien globb ist böse.
, jedoch wissen, das Build-System zu machen, dass eine Quelle hinzugefügt oder entfernt wurde, ist es ausreichend,
touch CMakeLists.txt
Recht zu sagen?
Dann ist weniger Aufwand als Bearbeiten CMakeLists.txt
zum Einfügen oder Löschen eines Quelldateinamens. Es ist auch nicht schwieriger, sich daran zu erinnern. Daher sehe ich keinen guten Grund, davon abzuraten, file GLOB
.
Was ist falsch an diesem Argument?
Siehe auch die Diskussion [hier] (http://stackoverflow.com/questions/30949452/cmake-ninja-attempting-to-compile-deleted-cpp-file/31183245). Wie in meiner Antwort beschrieben, verwende ich einen gemischten Ansatz: listet alle Quelldateien in den 'CMakeLists.txt' Dateien auf (auch weil ich manchmal Quelldateien für verschiedene Buildkonfigurationen handpicke) und global für die Headerdateien (aus Gründen der Bequemlichkeit) habe sie in den VS-Projekten). Und ich schlug einen Workaround für z.B. 'git' mit etwas wie' configure_file ($ {CMAKE_SOURCE_DIR} /. git/index $ {PROJECT_BINARY_DIR} /git_index.tmp) '. – Florian