使用patsubst进行辅助扩展

时间:2016-01-19 10:28:52

标签: c++ makefile gnu-make

我有以下make文件:

.SECONDEXPANSION:
CXX         = g++
CXXFLAGS    = -Wall -W -ansi -I. -I../Include
BUILD_DIR   = obj    
OUT = bin/EngineTests
SRC = LiveTestReporterStdout.cpp \
    EngineTests.cpp \
    IntegratorValidationTest.cpp \
PRIVATE_SRC = Private/Unit/BlockTests/AlertBlockTest.cpp \
    Private/Unit/BlockTests/CapBlockTest.cpp \
    Private/TestHelpers.cpp

OBJS = $(patsubst %.cpp, $(BUILD_DIR)/%.o, $(SRC))

all: $(OUT)

private: SRC += $(PRIVATE_SRC)
private: $(OUT)

$(BUILD_DIR)/%.o : %.cpp
    @echo $(CXX) $(CXXFLAGS) $<
    @mkdir -p $(dir $@)
    @$(CXX) $(CXXFLAGS) -c $< -o $@

$(OUT): $(OBJS)
    @echo Linking $@ ...
    # blah

目标是能够makeall$(SRC)构建make private以构建$(SRC) + $(PRIVATE_SRC)。但它不起作用 - 我意识到目标特定变量不能用于预先请求,并且解决方案在某种程度上涉及二次扩展,但无法使其工作。

我尝试了OBJS = $$(patsubst %.cpp, $(BUILD_DIR)/%.o, $$(SRC))以及类似的各种事情。

非常感谢

0 个答案:

没有答案