我有以下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
目标是能够make
从all
和$(SRC)
构建make private
以构建$(SRC) + $(PRIVATE_SRC)
。但它不起作用 - 我意识到目标特定变量不能用于预先请求,并且解决方案在某种程度上涉及二次扩展,但无法使其工作。
我尝试了OBJS = $$(patsubst %.cpp, $(BUILD_DIR)/%.o, $$(SRC))
以及类似的各种事情。
非常感谢