Gibt es einen Anwendungsfall in dem
? %Vor%Wenn ja, kann jemand erklären, was es wäre?
In aktuellen CMake-Versionen:
Nach einer Fehlerüberprüfung führt add_dependencies
zu einem Aufruf von Target->AddUtility()
. x
wird zur Liste von Dienstprogramme für my-lib
.
target_link_libraries
führt nicht zu einem Aufruf von AddUtility
, aber die Argumente werden zu LINK_LIBRARIES
Zieleigenschaft.
Später werden sowohl der Inhalt der Zieleigenschaft LINK_LIBRARIES
als auch die Liste der Dienstprogramme zur Berechnung der Abhängigkeiten des Ziels in cmComputeTargetDepends
.
Die Liste der Dienstprogramme in einem Ziel kann zur Konfigurationszeit nicht abgefragt werden und wird nur zur Generierungszeit verwendet. Daher ist die Verwendung von add_dependencies
mit Argumenten, die bereits mit target_link_libraries
hinzugefügt wurden, redundant.
Ich weiß nicht, in was besonders Sie interessant sind ...
Aus konzeptioneller Sicht - Ich denke, Sie haben Recht, es ist eine Verschwendung von Bytes
Aus der Sicht der cmake-Dokumentation - Sie sollten es vorziehen, dies zu tun, um die korrekte Erstellungsreihenfolge zu gewährleisten.
Laut der Dokumentation target_link_libraries wurde add_dependencies concepts ideologisch aufgeteilt. Eine solche Vorstellung von Split-Abhängigkeiten und Linker-Optionen besteht auch im Makefile-Format im GNU make-Tool
.. Geben Sie Bibliotheken oder Flags an, die beim Verknüpfen eines bestimmten Ziels verwendet werden sollen.
... Machen Sie eine Top-Level-Abhängigkeit von anderen Top-Level-Zielen, um sicherzustellen dass sie vorher gebaut haben ...
In modernen cmake von 3. * können Sie add_dependencies weglassen, wenn Sie eine Verknüpfung mit einem Alias-Ziel durchführen
%Vor%Es wird verwendet, wenn Top-Level-Ziele voneinander abhängen. Das heißt, wenn x etwas ist, das Sie Ihrem Projekt (auf oberster Ebene) mit
hinzufügen %Vor% Du wirst CMake davon erzählen. Und Sie tun das mit add_dependencies .Tags und Links cmake