Generic Makefile无法在FreeBSD上运行

Eth*_*gue 4 freebsd makefile cc

请注意,这与名为generic makefile的其他问题不重复.

我已经遵循了有关通用makefile的其他问题的所有说明,这是我从中得出的代码:

CFLAGS = -c
CC = cc
SOURCES = $(wildcard *.cc)
OBJECTS = $(patsubst %.cc,%.o,%(SOURCES))
EXEC = run

all: build clean

build: $(OBJECTS)
    $(CC) $(OBJECTS) -o $(EXEC)

%.o: %.cc
    $(CC) $(CFLAGS) $<

clean:
    rm *.o
Run Code Online (Sandbox Code Playgroud)

但是,当我make使用test.cc我的目录中调用的文件执行时,它会给我一个followig错误:

cc    -o run
cc: error: no input files
*** Error code 1

Stop.
make: stopped in /somewhere
Run Code Online (Sandbox Code Playgroud)

请注意我在FreeBSD上,makecc命令是操作系统附带的命令.

Jen*_*ens 5

线条

SOURCES = $(wildcard *.cc)
OBJECTS = $(patsubst %.cc,%.o,%(SOURCES))
Run Code Online (Sandbox Code Playgroud)

是GNU使得语法,而不是由FreeBSD的理解make,它有自己的方言(特别是$(wildcard)$(patsubst)).如果你需要将makefile编写为可移植到许多系统,要么需要gmake存在并使用GNUmakefiles,要么坚持使用POSIX make功能.

你可以gmake在FreeBSD上安装GNU make()

cd /usr/ports/devel/gmake
make install clean
Run Code Online (Sandbox Code Playgroud)

  • 这两行的freebsd版本是什么? (2认同)