target_link_libraries und add_dependencies

8

Gibt es einen Anwendungsfall in dem

? %Vor%

Wenn ja, kann jemand erklären, was es wäre?

    
Andrew Lazarus 03.12.2014, 22:33
quelle

3 Antworten

11

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.

    
steveire 04.12.2014, 22:05
quelle
1

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

target_link_libraries

  

.. Geben Sie Bibliotheken oder Flags an, die beim Verknüpfen eines bestimmten Ziels verwendet werden sollen.

add_dependencies

  

... 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%     
bruziuz 30.07.2015 11:02
quelle
-1

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 .

    
sebkraemer 04.12.2014 07:47
quelle

Tags und Links