Существует дерево файлов:
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
Комментариев нет:
Отправить комментарий