我正在运行Windows 10,并试图编写Makefile来编译使用SFML库以及nuklear库的C ++文件。我安装了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 documentation,我需要在Makefile中包含nuklear.h
。 对于我的项目,我有一个名为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存储库”)。因此,我相信我需要添加引号以包括完整路径。
但是当我在全路径中添加引号时,出现以下错误:
make: *** No rule to make target `/Users/Me/Github', needed by `demo.exe'. Stop.
因此,在Windows上的Makefile中指定路径时,我缺少了一些东西。当路径包含空格时,如何在我的Makefile中添加完整路径?
我已解决问题。
首先,我将项目移出Github Repositories
目录,并移至带有[[no空格GitHub_Repositories
的新目录。这解决了路径问题。
tab
,而不是一个space,>]$(CC) $(SRC) $(CFLAGS) -o $(BIN) $(SFML_INC) $(SFML_LIB) $(LIBS)
以前(就像在原始帖子中看到的那样,那里有空格。