Makefile:其他Makefile中不包含变量

时间:2018-11-19 19:10:40

标签: makefile gnu-make

我想使用common.mk文件来定义公共变量,并将此文件包含在其他Makefile中,但是在第一个示例中,我做不到,所以我认为我误会了一些东西。

这是Makefile:

CC=gcc
CFLAGS=-g -Wall
LIB_FLAGS=-L/usr/local/lib/ -lcgreen

BUILDDIR=$(CURDIR)/build
SRC=$(wildcard *.c)

export BUILDDIR 
export CFLAGS
export LIB_FLAGS

#include common.mk  # HERE I INCLUDE THE common.mk where OBJ is defined

unittests: dir externals $(OBJ)
    @echo "SRC: $(SRC)"
    @echo "OBJ: $(OBJ)" # THIS PRINTS OBJ AS EMPTY <------------------------------
    $(CC) $(BUILDDIR)/*.o $(LIB_FLAGS) -o $(BUILDDIR)/unittests
    $(BUILDDIR)/unittests

externals:
    @$(MAKE) -C lib1 -f lib1.mk

dir:
    mkdir -p $(BUILDDIR)

这是common.mk文件:

 OBJ=$(patsubst %.c, $(BUILDDIR)/%.o, $(notdir $(SRC)))

$(BUILDDIR)/%.o: %.c
    @echo "File: "$<
    $(CC) -c $(CFLAGS) $< -o $@

clean:
    rm -f $(OBJ)

因此,我期望主Makefile中的OBJ变量具有目标文件列表,但它为空,我不明白为什么。它包含common.mk文件是否与将其内容复制到Makefile中一样?

谢谢

1 个答案:

答案 0 :(得分:0)

正如@melpomene指出的那样,我要像在C中那样包含文件,因此将其注释掉!

很抱歉浪费您的时间。