这是我当前的Makefile
:
# DIRECTORY STRUCTURE
# ./libdnx/src/DnxHAL.cpp
# ./libdnx/inc/DnxHAL.h
# ./main.cpp
#
# REQUIRED COMPILATION STRUCTURE
# ./bin/build/DnxHAL.o
# ./bin/drone_deliver
#
BUILD_DIR = ./bin/build
LIBDNX_SRCDIR += ./libdnx/src
OBJECTS += ./bin/DnxHAL.o
MAIN = main.cpp
TARGET = ./bin/drone_deliver
$(TARGET): $(OBJECTS) $(MAIN)
$(CXX) $(CXX_FLAGS) $(LIBRARIES) $(INCLUDE_PATHS) $(OBJECTS) $(MAIN) -o $(TARGET)
$(BUILD_DIR)/%.o: $(LIBDNX_SRCDIR)/%.cpp
$(CXX) $(CXX_FLAGS) $(INCLUDE_PATHS) $(LIBRARIES) -c -o $@ $<
问题是当我将隐式规则更改为:
时$(BUILD_DIR)/%.o: %.cpp
$(CXX) $(CXX_FLAGS) $(INCLUDE_PATHS) $(LIBRARIES) -c -o $@ $<
它给出的错误是没有规则使目标需要./bin/build/DnxHAL.o
。这意味着如果我在另一个目录中有.cpp
个文件,与$(LIBDNX_SRCDIR)
不同,我需要为它们编写另一个规则。如何解决这个问题,以便隐式规则适用于所有.cpp
个文件。