GNU Makefile中当前目标的父目标名称

  • 本文关键字:目标 Makefile GNU makefile gnu
  • 更新时间 :
  • 英文 :


我需要什么:

all: release debug
release: compile
debug: compile
compile: 
if parent_target_name = release: 
$(CXXFLAGS) = for rel
else: $(CXXFLAGS) = for deb

问题:如何检查调用当前目标的目标的名称

我看到过GNUMake-get-parent-target-name这个问题,但它没有帮助。

您可能要查找的是特定于目标的变量值。如果您仔细阅读本手册的这一部分,您将看到它们是如何传播到先决条件的。

只是为了说明它们是如何工作的:

.PHONY: all release debug compile
all:
$(MAKE) release
$(MAKE) debug
release: CXXFLAGS = for rel
debug: CXXFLAGS = for deb
release debug: compile
@echo 'building $@ with CXXFLAGS = $(CXXFLAGS)'
compile: a b c
@echo 'building $@ with CXXFLAGS = $(CXXFLAGS)'
a b c:
@echo 'building $@ with CXXFLAGS = $(CXXFLAGS)'

演示:

$ make --no-print-directory all
make release
building a with CXXFLAGS = for rel
building b with CXXFLAGS = for rel
building c with CXXFLAGS = for rel
building compile with CXXFLAGS = for rel
building release with CXXFLAGS = for rel
make debug
building a with CXXFLAGS = for deb
building b with CXXFLAGS = for deb
building c with CXXFLAGS = for deb
building compile with CXXFLAGS = for deb
building debug with CXXFLAGS = for deb

最新更新