Я использую Windows 10 и пытаюсь написать Makefile для компиляции файла C ++, который использует библиотеку SFML, а также библиотеки nuklear . У меня установлен и добавлен MinGW в мою PATH, а также установлена и добавлена GNU Make в мою PATH. Поэтому я могу вызывать make
и gcc
из окна командной строки.
Редактируемый мной Makefile:
# Install
CC = gcc
BIN = demo
# Flags
CFLAGS += -s -O2
SRC = main.cpp
OBJ = $(SRC:.cpp=.o)
# Edit the line below to point to your SFML folder on Windows
SFML_DIR = C:/SFML-2.5.1/
BIN := $(BIN).exe
LIBS = -lmingw32 -DSFML_STATIC -lsfml-window-s -lsfml-system-s -lopengl32 -lwinmm -lgdi32
SFML_INC = -I $(SFML_DIR)/include
SFML_LIB = -L $(SFML_DIR)/lib
$(BIN):
$(CC) $(SRC) $(CFLAGS) -o $(BIN) $(SFML_INC) $(SFML_LIB) $(LIBS)
Но согласно документации nuklear , мне нужно включить nuklear.h
в Makefile. Для моего проекта у меня есть каталог с именем include
, который содержит nuklear.h
. Полный путь похож на:
C:/Users/Me/Github Repositories/folder-1/folder-2/include/
Поэтому я делаю следующие дополнения в Makefile:
SFML_DIR = C:/SFML-2.5.1/
INCL_DIR = C:/Users/Me/Github Repositories/folder-1/folder-2/include/
$(BIN):
# $(CC) $(SRC) $(CFLAGS) -o $(BIN) $(SFML_INC) $(SFML_LIB) $(LIBS)
$(CC) $(SRC) $(CFLAGS) -o $(BIN) -I $(INCL_DIR) $(SFML_INC) $(SFML_LIB) $(LIBS)
Я добавил путь к nuklear.h
и попросил включить его в компиляцию, указав флаг -I
. Но я получаю следующую ошибку при запуске Make
:
makefile:23: *** missing separator. Stop.
Теперь в пути есть пробел («Github Reposities»). Поэтому я считаю, что мне нужно добавить кавычки, чтобы включить полный путь.
Но когда я добавляю кавычки в полный путь, я получаю следующую ошибку:
make: *** No rule to make target `/Users/Me/Github', needed by `demo.exe'. Stop.
Итак, я ' я что-то упускаю, когда дело доходит до указания путей в Makefile на Windows. Как добавить полный путь в мой Makefile, если путь содержит пробелы?