如何在Windows的Makefile中编写路径

问题描述 投票:1回答:1

我正在运行Windows 10,并试图编写Makefile来编译使用SFML库以及nuklear库的C ++文件。我安装了MinGW并将其添加到我的PATH中,并且我还安装了GNU Make并将其添加到我的PATH中。因此,我可以从命令提示符窗口中同时调用makegcc

我正在编辑的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中添加完整路径?

c++ gnu-make
1个回答
0
投票

我已解决问题。

首先,我将项目移出Github Repositories目录,并移至带有[[no空格GitHub_Repositories的新目录。这解决了路径问题。

第二,我必须在前面插入一个

tab

,而不是一个space,>]$(CC) $(SRC) $(CFLAGS) -o $(BIN) $(SFML_INC) $(SFML_LIB) $(LIBS)
以前(就像在原始帖子中看到的那样,那里有空格。
© www.soinside.com 2019 - 2024. All rights reserved.