2015-03-30 16 views
0

Q的更好的方法:這是我下面的Makefile片段:GNU品牌:同時使用C/C++的目標有不同的命令

SRCS+=$(wildcard *.c *.cpp) 
OBJECTS=$(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o,$(SRCS:.cpp=.o))) 
# ..... 
$(OBJ_DIR)/%.o: %.cpp 
    $(CXX) -ggdb -Wall -Wextra -Werror $(INC) $(C_FLAGS) -c -o [email protected] $< 

$(OBJ_DIR)/%.o: %.c 
    $(CC) -ggdb -Wall -Wextra -Werror $(INC) $(C_FLAGS) -c -o [email protected] $< 

我如何重構表達的「對象」後,取下類似的重複.cpp和。%c的規則

回答

2
OBJECTS := $(patsubst %,$(OBJ_DIR)/%.o,$(basename $(SRCS))) 
# Note that you may not need this variable at all. 

COMPILE_ARGS = -ggdb -Wall -Wextra -Werror $(INC) $(C_FLAGS) -c -o [email protected] $< 

$(OBJ_DIR)/%.o: %.cpp 
    $(CXX) $(COMPILE_ARGS) 

$(OBJ_DIR)/%.o: %.c 
    $(CC) $(COMPILE_ARGS) 
+0

宏是一個有趣的解決方案。謝謝! – ProgDevel 2015-03-30 20:19:09

+1

您錯過了$(CC)'和$(CXX)'的變更。 – 2015-03-30 20:19:38

+0

是的。這對我很重要 – ProgDevel 2015-03-30 20:21:25

相關問題