【发布时间】:2017-08-07 09:27:56
【问题描述】:
这是我的 makefile 的主要部分:
#openmp
ifeq($(BLITTZ_CC), icc)
OPENMP_OPTIONS := -fopenmp
else
OPENMP_OPTIONS := -fopenmp
endif
#compiler options
CXXFLAGS := -WALL -Wno-unused-parameter $(OPTIMIZE_OPTIONS) $(OPENMP_OPTIONS) $(MODE)
SRC_LIST := $(wildcard $(SRC_DIR)/*.cpp)
OBJ_LIST := $(patsubst %.cpp, $(BUILD_DIR)/%.o, $(notdir $(SRC_LIST)))
TARGET := main
BIN_TARGET := $(BIN_DIR)/$(TARGET)
$(BIN_TARGET): $(OBJ_LIST)
$(BLITZ_CC) -o $@ $(OBJ_LIST) $(CXXFLAGS)
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.s
$(BLITZ_CC) -o $@ -c $< $(CXXFLAGS)
$(BUILD_DIR)/%.s: $(SRC_DIR)/%.cpp
$(BLITZ_CC) -o $@ -S $(CXXFLAGS) $<
#inc test
test:
echo $(SRC_LIST)
echo $(OBJ_LIST)
echo $(BIN_TARGET)
#clean
clean:
find $(BUILD_DIR) -name *.o -exec rm rf {} \;
find $(BUILD_DIR) -name *.s -exec rm rf {} \;
rm $(BIN_DIR)/*
这是make之后发生的事情:
为什么rm *.s 会出现在这里?我需要汇编文件,我不想删除它们。
【问题讨论】:
-
发布源代码和构建日志在问题内。不要发布图片。
-
也许从makefile中删除相关的
rm命令? -
您的 Makefile 中是否缺少默认目标?更多详情请见this reply
-
我眼力不够看你截图,但是
.s文件都是.c源生成.o文件中的中间文件;所以make将在之后将它们全部删除,除非您专门发出命令来制作.s文件。您可以使用.PRECIOUS: %.s将它们保留在最新版本的 gmake 中