首页 > 解决方案 > Makefile:变量不包含在其他 makefile 中

问题描述

我想使用 common.mk 文件来定义公共变量,并将该文件包含在其他 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 中不一样吗?

谢谢

标签: makefilegnu-make

解决方案


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

很抱歉浪费你的时间。。


推荐阅读