Как написать пути в Makefile для Windows - PullRequest
1 голос
/ 14 марта 2020

Я использую 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, если путь содержит пробелы?

1 Ответ

0 голосов
/ 14 марта 2020

Я исправил проблему.

Во-первых, я переместил свой проект из каталога Github Repositories в новый каталог с без пробелов, GitHub_Repositories. Это исправило проблему с путём.

Во-вторых, мне пришлось вставить табуляцию , а не пробел , перед

$(CC) $(SRC) $(CFLAGS) -o $(BIN) $(SFML_INC) $(SFML_LIB) $(LIBS)

Ранее (как видно из оригинального поста) там были пробелы.

...