G++ скомпилировать исходные файлы, существующие в другом каталогеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 G++ скомпилировать исходные файлы, существующие в другом каталоге

Сообщение Anonymous »

Я пытаюсь настроить процесс сборки с помощью make-файлов для плагина C++, над которым я работаю. Мне интересно узнать, есть ли какой-нибудь способ заставить G++ компилировать исходные файлы, найденные в другом каталоге.
Моей мотивацией для этого является избежание необходимости указывать относительный путь для каждого исходного файла, как я объясняю ниже.
Структура каталогов моего проекта выглядит следующим образом:

Код: Выделить всё

MyPlugin --> src   --> Foo.cpp
--> Foo.h
--> Bar.cpp
--> Bar.cpp
--> build --> Makefile
Ниже представлена ​​урезанная версия моего текущего файла 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
Таким образом я пытаюсь избежать определения переменной FILES, как показано ниже:

Код: Выделить всё

FILES=../src/Foo.cpp ../src/Bar.cpp
Когда я попытался запустить make all, g++ выдал мне ошибку. Похоже, что путь, указанный с помощью флага -I, используется только для поиска файлов #included.

g++: Foo.cpp: Нет такого файла или каталога

g++: Bar.cpp: Нет такого файла или каталога

Я не могу использовать подстановочные знаки (), потому что я не всегда хочу, чтобы все файлы подхватывались для компиляции. Другая альтернатива — перейти по cd в каталог src, как упоминалось здесь, и запустить оттуда g++, но у меня это работает только в том случае, если все файлы находятся в одном каталоге (мне нужно, чтобы выходные данные были одним файлом .so). Я также попытался установить переменную среды PATH, но это, похоже, не дало никакого эффекта.
Я просмотрел справку g++, документацию make и просмотрел сообщения о переполнении стека, такие как https://stackoverflow.com/questions/100 ... -directory и gcc/g++: «Нет такого файла или каталога», но я не смог найти решения, которое можно было бы использовать. Существует ли подходящий подход к этой проблеме?
Пример может ввести в заблуждение. В этом урезанном примере все исходные файлы находятся в одном каталоге, но в моем реальном проекте у меня есть несколько подкаталогов и несколько файлов в каждом каталоге. Таким образом, хотя переход в каталог src работает в моем примере выше, он не будет работать в моем реальном проекте (или, по крайней мере, я хотел бы знать, как это будет работать).

Подробнее здесь: https://stackoverflow.com/questions/136 ... -directory
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»