【发布时间】:2017-11-07 03:04:31
【问题描述】:
我有一个由几个源头文件组成的小型 C++ 语言项目,我使用 Makefile 来构建我的项目。
最近我在我的项目中添加了一个 .c 文件,该文件最初只有 .cpp 文件。为了构建包括 .c 文件在内的整个项目,我修改了 Makefile,如下所示:
SRC_DIR := src
INC_DIR := include
BUILD_DIR := build
C_EXT := c
CPP_EXT := cpp
SOURCES := $(shell find $(SRC_DIR) -type f -name *.$(CPP_EXT))
$(shell find $(SRC_DIR) -type f -name *.$(C_EXT)) # Added!
...
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.$(CPP_EXT) $(INC_DIR)/%.h
@mkdir -p $(BUILD_DIR)
$(CXX) $(CFLAGS) -I $(INC_DIR) -c -o $@ $<
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.$(C_EXT) $(INC_DIR)/%.h # Added!
@mkdir -p $(BUILD_DIR) # Added!
$(CXX) $(CFLAGS) -I $(INC_DIR) -c -o $@ $< # Added!
但我认为它有点难看,因为有重复的命令。有什么方法可以去除重复并改进这个 Makefile 命令?
【问题讨论】:
-
如果您要使用相同的编译器编译它们,请重命名文件 else change.c 以使用 $CC
-
@Waslap 这也是一个至关重要的信息。谢谢:D