G++ kompiliert Quelldateien, die in einem anderen Verzeichnis vorhanden sindC++

Programme in C++. Entwicklerforum
Anonymous
 G++ kompiliert Quelldateien, die in einem anderen Verzeichnis vorhanden sind

Post by Anonymous »

Ich versuche, mithilfe von Makefiles einen Build-Prozess für ein C++-Plugin einzurichten, an dem ich arbeite. Ich bin gespannt, ob es eine Möglichkeit gibt, G++ dazu zu bringen, in einem anderen Verzeichnis gefundene Quelldateien zu kompilieren.
Mein Beweggrund dafür besteht darin, die Angabe des relativen Pfads für jede Quelldatei zu vermeiden, wie ich weiter unten erläutere.
Meine Projektverzeichnisstruktur sieht so aus:

Code: Select all

MyPlugin --> src   --> Foo.cpp
--> Foo.h
--> Bar.cpp
--> Bar.cpp
--> build --> Makefile
Es folgt eine abgespeckte Version meines aktuellen Makefiles:

Code: Select all

SRC_PATH=../src
OUT_PATH=../bin
VPATH=${SRC_PATH}
FILES=Foo.cpp Bar.cpp

CC=g++
CFLAGS=-Wall -shared

all:
mkdir -p ${OUT_PATH}
${CC} ${CFLAGS} -I${SRC_PATH} ${FILES} -o ${OUT_PATH}/MyPlugin.so
Auf diese Weise versuche ich zu vermeiden, die Variable FILES wie folgt zu definieren:

Code: Select all

FILES=../src/Foo.cpp ../src/Bar.cpp
Als ich versuchte, make all auszuführen, gab mir g++ eine Fehlermeldung. Es sieht so aus, als ob der durch das Flag -I angegebene Pfad nur für die Suche nach #included-Dateien verwendet wird.

g++: Foo.cpp: Keine solche Datei oder kein solches Verzeichnis

g++: Bar.cpp: Keine solche Datei oder kein solches Verzeichnis

Ich kann keine Platzhalter verwenden (

Code: Select all

*.cpp
), da ich nicht immer möchte, dass alle Dateien zur Kompilierung abgeholt werden. Eine andere Alternative besteht darin, wie hier erwähnt mit cd in das src-Verzeichnis zu wechseln und von dort aus g++ auszuführen, aber das funktioniert bei mir nur, wenn sich alle Dateien im selben Verzeichnis befinden (die Ausgabe muss eine einzelne .so-Datei sein). Ich habe auch versucht, die Umgebungsvariable PATH festzulegen, aber das schien keine Auswirkung zu haben.
Ich habe in der G++-Hilfe und in der Make-Dokumentation nachgesehen und mir Stack Overflow-Beiträge angesehen, z. B. https://stackoverflow.com/questions/100 ... -directory und gcc/g++: „Keine solche Datei oder kein solches Verzeichnis“, aber ich konnte keine Lösung finden, die ich verwenden könnte. Gibt es einen geeigneten Ansatz für dieses Problem?
Das Beispiel war möglicherweise irreführend. In diesem vereinfachten Beispiel habe ich alle Quelldateien in einem Verzeichnis, aber in meinem eigentlichen Projekt habe ich mehrere Unterverzeichnisse und mehrere Dateien in jedem Verzeichnis. Obwohl das cding in das src-Verzeichnis in meinem obigen Beispiel funktioniert, wird es in meinem tatsächlichen Projekt nicht funktionieren (oder zumindest würde ich gerne wissen, wie es funktionieren würde).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post