Я использую GNU make на Windows 8, чтобы узнать о make-файлах. Учебное пособие, на которое я ссылаюсь, написано для Linux, поэтому я исправляю make-файл, указанный насколько я знаю, например. заменить ‘/’ на ‘\’ и т. д.
Содержимое моего make-файла:
CC=g++
INCLIST=functions.h
INCDIR=..\include
OBJDIR=.\obj
BINDIR=..\bin
_OBJLIST = main.o
OBJ=$(patsubst %,$(OBJDIR)\%,$(_OBJLIST))
all: main.o
main.o: main.cpp
$(CC) -c -I $(INCDIR) main.cpp -o $(OBJ)
Я могу скомпилировать main.cpp вручную
g++ -c -I ..\include main.cpp -o .\obj\main.o
Тем не менее, когда я бегу make
, вывод:
g++ -c -I ..\include main.cpp -o .\obj%
и объектный файл создается в текущем каталоге, а не .\obj
каталог и называется ./obj%
вместо обязательного main.o
, Я запустил ту же настройку на Ubuntu, и она отлично работала, кто-нибудь может объяснить, почему?
Спасибо.. 🙂
Обратная косая черта — это escape-маркер, поэтому \% — это буквальный знак процента. Кроме того, / работает на Windows тоже.
Других решений пока нет …