这是我的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
出现在这里?我需要汇编文件,我不想删除它们。
答案 0 :(得分:2)
因为您chained rules要从MainActivity
文件创建.o
文件,请将您的.cpp
文件标记为中间文件并在构建目标后删除它们。
您需要使用.s
将文件标记为珍贵文件,以告知make保留这些文件。
答案 1 :(得分:0)
find $(BUILD_DIR) -name *.s -exec rm rf {} \;
将获取所有.s
个文件并执行rm rf
,因此如果要保留.s
个文件,请删除该行