Страницы

Поиск по вопросам

вторник, 23 апреля 2019 г.

Makefile для отдельных каталогов src и bin

Существует дерево файлов:
folder |-src |-myfile.cpp |-myfile.h |-bin |-Makefile
Хочу написать Makefile так, чтобы компилировались файлы, находящиеся в каталоге src, но объектные файлы создавались в текущем (в folder). А потом, чтобы они линковались в один файл в каталог bin.
На данный момент имею нерабочий Makefile. Ругается на отсутствие правила для myfile.o.
TARGET=myfile OBJECTS=myfile.o XX=g++ CXXFLAGS=-std=c++11
all: ${TARGET} ${TARGET}: ${OBJECTS} ${XX} -o ${TARGET} ${OBJECTS} .c.o: ${XX} ${CXXFLAGS} -c "${INCLUDE}$<" -o "$@"
Как правильно реализовать поставленную задачу?


Ответ

чтобы они линковались в один файл в каталог bin
значит, собирать вам надо не myfile, а bin/myfile. это я про переменную TARGET
объектные файлы создавались в текущем
так и укажите цель и пререквизиты соответствующим образом:
%.o: src/%.cpp $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $(OUTPUT_OPTION) $<
здесь вторая строка, рецепт, взята из implicit rules, которые можно посмотреть в выводе команды make -p

остаётся только объяснить компилятору, где искать заголовочный файл myfile.h (если, конечно, компилятор сам не «догадается»). тут я, как не-программист, вряд ли чем помогу. разве что предположу, что надо добавить к значению перменной CPPFLAGS или CXXFLAGS опцию -I src

Комментариев нет:

Отправить комментарий