我试图包含一个C库,然后将其与我的C++应用程序沿着编译,但我无法使我的makefile正常工作:
SRC = main.cpp menu.cpp dialog_wnd.cpp player.cpp
C_SRC = miniaudio.c
CXX = g++
CXXFLAGS = -Wall $(shell fltk-config --cxxflags)
LFLAGS = $(shell fltk-config --ldflags)
OBJS = $(SRC:.cpp=.o) $(C_SRC:.c=.o)
DIR_OBJ = obj/
DIR_OBJS = $(addprefix $(DIR_OBJ), $(OBJS))
$(DIR_OBJ)%.o: %.cpp %.c *.h
$(CXX) $(CXXFLAGS) -c $(<) -o $(@)
EXE = myApplication
all: $(EXE)
$(EXE): $(DIR_OBJS)
$(CXX) -o $@ $^ $(LFLAGS)
depend:
makedepend -- $(CXXFLAGS) -- $(SRC) $(C_SRC)
strip: $(EXE)
strip --strip-all $(EXE)
clean:
rm -f $(DIR_OBJS)
rm -f $(EXE)
我得到这个错误:
make:***没有规则来创建目标'obj/main. o','myApplication'需要。
我做错了什么?
1条答案
按热度按时间m1m5dgzv1#
$(DIR_OBJ)%.o: %.cpp %.c *.h
使得每个目标文件都需要同时对应的.cpp
和.c
文件。我建议将其一分为二,这样也可以为C代码使用适当的编译器(
$(CC)
)。对于标志,使用CPPFLAGS
作为您希望同时使用的选项,使用CFLAGS
作为C编译器使用的标志。示例:
注意:使每个目标文件依赖于每个头文件将需要在每次接触单个头文件时进行完全重建。