Makefile 错误:Solaris 11.4 上出现意外 EOL

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

这是有问题的 Makefile:

CFLAGS += -std=c11
CFLAGS += -fPIC
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -Werror
CFLAGS += -Wwrite-strings
CFLAGS += -Wno-unused-variable
CFLAGS += -Wno-parentheses
CFLAGS += -Wpedantic
CFLAGS += -Warray-bounds
CFLAGS += -Wno-unused-function
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wdeprecated

CFLAGS += $(EXTRA_CFLAGS)

TARGET := arena
TEST_TARGET := tests
SLIB_TARGET := libarena.a
DLIB_TARGET := libarena.so

RM := /bin/rm -f

static: $(SLIB_TARGET)

$(SLIB_TARGET): $(TARGET).o
    $(AR) rcs $@ $(TARGET).o

shared: $(DLIB_TARGET)

$(DLIB_TARGET): $(TARGET).o
    $(CC) $(CFLAGS) $(TARGET).o -o $@ $(LDFLAGS) -shared

test: 
    $(MAKE) EXTRA_CFLAGS="-DDEBUG" $(TEST_TARGET)
    ./$(TEST_TARGET) --verbose=3

clean: 
    $(RM) $(TEST_TARGET) $(TARGET).o $(SLIB_TARGET) $(DLIB_TARGET)

.PHONY: release debug static shared test clean
.DELETE_ON_ERROR:

结果是:

make: Fatal error in reader: Makefile, line 18: Unexpected end of line seen

这个问题有多个重复项,但他们都建议使用

gmake
而不是
make
。虽然这有效,但我不想使用
gmake

这是 Solaris 的 make 手册页:make

跑步:

make -x SUN_MAKE_COMPAT_MODE=GNU test

输出相同。

makefile gnu-make solaris
1个回答
0
投票

:=
形式的所有分配更改为
=
即可解决问题。

Solaris make 文档将

:=
定义为“条件宏赋值”,而 GNU make 文档将其定义为“简单扩展变量赋值”。

© www.soinside.com 2019 - 2024. All rights reserved.