具有已修改目标目录的Makefile隐式规则

时间:2017-04-08 02:13:58

标签: makefile gnu-make

这是我当前的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个文件。

0 个答案:

没有答案