具有用于测试目标的不同源文件夹的Makefile

问题描述 投票:0回答:1

我对C ++ makefile非常陌生,我拥有下面的makefile,我大多是从Internet上的某个地方复制它的。我对makefile的贡献是“测试”目标,这就是问题所在。

我的代码在include(对于标题),src(对于源代码)和test(对于测试源代码)目录中进行组织。对于标准目标,我想在src文件夹中构建所有文件,其中还包括main.cpp文件。为了进行测试构建,我想构建src文件夹except main.cpp中的所有文件,以及另外<< test >>文件夹中的所有文件。我希望我的测试目标能够实现这一目标,但是失败了。它只是从标准目标构建文件。我该如何纠正我的错误。

谢谢

我使用的makefile:

APP=myappname SRC_DIR=src INC_DIR=include OBJ_DIR=obj BIN_DIR=bin TEST_SRC_DIR=test MAIN_CPP_NAME=main.cpp CC=g++ LD=g++ CFLAGS=-O2 -c -Wall -std=c++17 LFLGAS= DFLAGS=-g3 -O0 -DDEBUG INCFLAGS=-I$(INC_DIR) SOURCES=$(wildcard $(SRC_DIR)/*.cpp) HEADERS=$(wildcard $(INC_DIR)/*.hpp) OBJECTS=$(SOURCES:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) DEPENDS=$(OBJ_DIR)/.depends .PHONY: all all: $(BIN_DIR)/$(APP) .PHONY: debug debug: CFLAGS+=$(DFLAGS) debug: all .PHONY: test test: SOURCES=$(wildcard $(SRC_DIR)/*.cpp) test: SOURCES=$(filter-out $(SRC_DIR)/$(MAIN_CPP_NAME), $(SOURCES)) test: OBJECTS=$(SOURCES:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) test: TEST_SOURCES=$(wildcard $(TEST_SRC_DIR)/*.cpp) test: OBJECTS+=$(TEST_SOURCES:$(TEST_SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) test: all $(BIN_DIR)/$(APP): $(OBJECTS) | $(BIN_DIR) $(LD) $(LFLGAS) -o $@ $^ $(OBJ_DIR)/%.o: | $(OBJ_DIR) $(CC) $(CFLAGS) $(INCFLAGS) -o $@ $< $(DEPENDS): $(SOURCES) | $(OBJ_DIR) $(CC) $(INCFLAGS) -MM $(SOURCES) | sed -e 's!^!$(OBJ_DIR)/!' >$@ ifneq ($(MAKECMDGOALS),clean) -include $(DEPENDS) endif $(BIN_DIR): mkdir -p $@ $(OBJ_DIR): mkdir -p $@ .PHONY: clean clean: rm -rf $(BIN_DIR) $(OBJ_DIR)

我对C ++ makefile非常陌生,我拥有下面的makefile,我大多是从Internet上的某个地方复制它的。我对makefile的贡献是“测试”目标,这就是问题所在。我的代码...
c++ makefile
1个回答
0
投票
您正在尝试编写复杂的makefile,而又不了解基础知识,这几乎是不可能的。让我们尝试一个非常简单的方法。
© www.soinside.com 2019 - 2024. All rights reserved.