【发布时间】:2015-10-16 19:23:25
【问题描述】:
我已经看到this 的问题,但不知何故仍然无法让make 正确地呼叫另一个Makefile。这是我的Makefile:
base:
cd Base && $(MAKE)
Base 是我当前目录的子目录,其中有一个不同的Makefile 用于编译所述文件夹中的文件。但是,当我调用 make 时,我只会得到 nothing to be done for base,而当我从命令行调用 cd Base && make 时,我会得到预期的行为(即发生编译)。如果Base 中的Makefile 有问题,这里也有一份副本:
CC=g++
CFLAGS=-O3 -Wall -pedantic -Werror -c
LINK=g++
LFLAGS=-O3
SRC=main.cpp
OBJ=..\lib\main.o
EXE=..\bin\test.exe
all: $(EXE)
$(EXE): $(OBJ) $(SRC)
$(LINK) $(LFLAGS) $(OBJ) -o $(EXE)
..\lib\main.o: main.cpp
$(CC) $(CFLAGS) $< -o $@
【问题讨论】:
-
使用
make -C dir在另一个目录上调用make。 -
@JonathanBen-Avraham:效果很好。
.PHONY有什么作用? -
如果您尝试将
cd Base && $(MAKE)替换为echo hello,您会注意到这个问题与Make 调用Make 无关。