g++ compiler les fichiers sources existantes dans un autre répertoire

J'essaye de configurer un processus de construction à l'aide de makefiles, pour un C++ plugin que je suis en train de travailler sur. Je suis curieux de savoir si il y a moyen de faire de g++ compiler source les fichiers dans un autre répertoire. Ma motivation pour le faire, c'est d'éviter d'avoir à spécifier le chemin d'accès relatif pour chaque fichier source, comme je l'explique ci-dessous.

Mon projet de structure de répertoire ressemble à:

MyPlugin --> src   --> Foo.cpp
                   --> Foo.h
                   --> Bar.cpp
                   --> Bar.cpp
         --> build --> Makefile

Qui suit est une version allégée de mon Makefile:

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

En faisant cela, j'essaie d'éviter de définir la FILES variable comme ci-dessous:

FILES=../src/Foo.cpp ../src/Bar.cpp

Quand j'ai essayé de courir make all, g++ m'a donné une erreur. On dirait le chemin d'accès spécifié par -I drapeau est utilisé uniquement pour la recherche #included fichiers.

g++: Foo.cpp: No such file or directory
g++: Bar.cpp: No such file or directory

Je ne peut pas utiliser des caractères génériques (*.cpp) parce que je ne veux pas toujours tous les fichiers à être ramassé pour la compilation. Une autre alternative est de cd dans le répertoire src, comme mentionné ici, et exécuter g++ à partir de là, mais ça ne marche que pour moi, si tous les fichiers sont dans le même répertoire (j'ai besoin de la sortie à un seul .so fichier). J'ai aussi essayé le réglage de la variable d'environnement PATH, mais qui ne semblent avoir aucun effet.

J'ai regardé dans le g++ aider, le faire de la documentation, et regarda StackOverflow des emplois tels que https://stackoverflow.com/questions/10010741/g-compile-with-codes-of-base-class-in-a-separate-directory et gcc/g++: "No such file or directory" , mais ne pouvait pas trouver un solution que je pourrais utiliser. Pourriez-vous me suggérer une solution à ce problème?

Modifier L'exemple peut avoir été trompeuse. Dans cette dépouillé exemple, j'ai tous les fichiers source dans un répertoire, mais dans mon projet actuel, j'ai plusieurs sous-répertoires, et plusieurs fichiers dans chaque répertoire. Ainsi, bien que cding à la src répertoire des œuvres dans mon exemple ci-dessus, il ne fonctionnera pas dans mon projet (ou au moins, je voudrais savoir comment il fonctionne).

pourquoi la sortie d'un single .si le fichier de vous empêcher de cd 'ing dans le src répertoire?
Comme je l'ai mentionné, qui ne fonctionne que si tous les fichiers source sont dans le même répertoire. Je veux que tous les fichiers source pour être compilé en une seule .donc fichier.

OriginalL'auteur Masked Man | 2012-11-30