Ist es möglich, Microsoft build.exe sind Quellen von Remote-Verzeichnissen zu machen?

StackOverflow https://stackoverflow.com/questions/411841

  •  03-07-2019
  •  | 
  •  

Frage

Quelle Hinzufügen von Dateien mehr als ein Verzeichnis entfernt (zB ../../source.cpp oder ../../../somewhere_else/source.cpp, gegen nur source.cpp oder ../source. CPP) an die Sourcen = Erklärung in einem WDK / DDK build ergibt der folgende Fehler:

Ignoring invalid directory prefix in SOURCES= entry

Ist es möglich, Remote-Quelldateien in einem Build enthalten?

War es hilfreich?

Lösung

Es ist nicht möglich, dies direkt zu tun. build ist ausdrücklich nur zu behandeln entworfen mit Quellcode in dem gleichen oder übergeordneten Verzeichnis der sources Datei. Es kann nicht Quelldateien von beliebigen Orten verwenden. Insbesondere scheint die Abhängigkeit-Tracking-System nicht in der Lage Remote-Dateien zu analysieren und zu verfolgen, und daher explizit überprüft sie und erzwingt, dass alle Dateien lokal sein.

Es gibt zwei Lösungen:

  1. Remote-Code als separates lib Erstellen (entweder über ein weiteres Teilprojekt / Verzeichnis im selben build Projekt oder mit Hilfe eines unabhängigen Build-Schritt).

  2. Legen Sie eine lokale Stub für jede Remote-Quelldatei, die #include "../../remote_source.cpp des Fall ist, und fügen Sie die SOURCES= Liste diese lokalen Stub, statt. Dies funktioniert, aber build / nmake wird nicht Spur Abhängigkeiten im remote_source.cpp. Wenn remote_source.cpp Änderungen, müssen Sie entweder die lokale Proxy-Quelle touch oder auf andere Weise zwingen, ein Wiederaufbau (löschen Sie den lokalen Proxy obj, laufen build mit -cZ oder auf andere Weise).

Andere Tipps

Eine andere Möglichkeit ist source.inc zu verwenden, um diese Dateien zu schließen.

Hass ein Super altes Thema wieder zu beleben, aber ich lief in dem auch.

Eine alternative alternative Art und Weise ist ein andere Quellen zu erstellen Datei im Innern, die ausschließlich Objektdateien von der entfernten Quelle bauen, so dass im Grunde eine Datei mit dem Namen somewhere_else \ sources , und ihm das gleiche Zwischenverzeichnis geben.

Dann eine ‚dirs‘ Datei zu Ihrem ursprünglichen Verzeichnis hinzufügen und diese Remote-Ordner innerhalb angeben. Dann verknüpft direkt auf die Objektdatei durch so etwas wie dies zu den ursprünglichen Quellen angegeben Datei:

$(TARGETLIBS) = $(PROJECT_OBJ_ROOT)\$(O)\source.obj

Auf diese Weise müssen Sie nicht als lib kompiliert, sondern behandelt sie wie eine und Link ohne Abhängigkeitsprüfung oder Pflege von Standort bauen.

Natürlich könnten Sie in einige Probleme laufen, wenn Sie ihnen das gleiche Zwischen Verzeichnis und die gleichen Quelle Dateinamen (source.cpp)

geben
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top