Makefile: переменные не включены из другого make-файла - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу использовать файл 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)

Так что я ожидал, что переменная OBJ в основном Makefile имеет список объектных файлов, но он пуст, и я не понимаю, почему. Разве он не включает в себя файл common.mk и не копирует его содержимое в Makefile?

Спасибо

1 Ответ

0 голосов
/ 19 ноября 2018

Как указал @melpomene, я включил файл, как это делается в C, и поэтому комментировал его!

Извините, что потратил ваше время ..

...