这是我的特定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
答案 0 :(得分:1)
不能将包含空格的路径与make一起使用。有一些疯狂的技巧可以使某些有限的功能起作用,但基本上根本不支持。
查看最近的问题和答案:https://stackoverflow.com/a/56411000/939557