为什么会出现“未终止的带引号的字符串”错误?

时间:2019-06-03 20:10:06

标签: makefile

这是我的特定C ++项目的makefile,但是当我运行make all时,我得到:

/bin/sh: 1: Syntax error: Unterminated quoted string
Makefile:28: recipe for target '"system' failed
make: *** ["system] Error 2

当我将exe更改为无空格的内容时,效果很好。

编辑#1:我使用引号的原因是为了可以在输出文件名中使用空格。


cc = g++

exe = "system software version 1.0"
src_dir = src
obj_dir = obj

src = $(wildcard $(src_dir)/*.cpp)
obj = $(patsubst $(src_dir)/%.cpp, $(obj_dir)/%.o, $(src))


libs = -lallegro -lallegro_primitives

include_paths = -I "include" -I "~/allegro5/include/"

lib_paths = -L "/usr/lib/"

flags = -Wall -Wextra -Wpedantic -g -std=c++14




all: $(exe)

play: all
    $(exe)

$(exe): $(obj)
    $(cc) $(lib_paths) $^ $(libs) -o $@

compile_only: $(obj)

$(obj_dir)/%.o: $(src_dir)/%.cpp
    $(cc) $(flags) $(include_paths) -c $^ -o $@

clean:
    rm -f $(obj_dir)/*.o

build: all

rebuild: clean build

.PHONY: all clean rebuild

1 个答案:

答案 0 :(得分:1)

不能将包含空格的路径与make一起使用。有一些疯狂的技巧可以使某些有限的功能起作用,但基本上根本不支持。

查看最近的问题和答案:https://stackoverflow.com/a/56411000/939557