【问题标题】:Makefile errors when I change a directory name更改目录名称时的 Makefile 错误
【发布时间】:2012-03-15 19:10:32
【问题描述】:

我有一个可以编译的 Makefile,但我想将其中一个目录的名称从“release”更改为“objects”。这是原始的 Makefile -

# This makefile compiles ....

INCLUDE = -I/usr/include/X11 -I/usr/local/include -I/usr/local/include/FL/images -I/usr/include/freetype2

CC=g++ 
CFLAGS=-w -D LINUX -O3 -fpermissive 
OBJDIR=release  # HERE IS THE DIRECTORY I WANT TO CHANGE
SRCDIR=src

LDFLAGS= -L/usr/X11R6/lib$(LIBSELECT) -lpthread -lfltk -lXext -lXft -lfontconfig -lXinerama -lpthread -ldl -lm -lX11

SOURCES_RAW= robot_driver_agent.cpp robot_driver_position.cpp robot_driver_priorityqueue.cpp main.cpp robot_driver_tree.cpp robot_driver_stack.cpp robot_driver_grid.cpp robot_driver_path.cpp grid_analyzer.cpp tcpserver.cpp tcpclient.cpp servercontrol.cpp clientcontrol.cpp robot.cpp udpserver.cpp udpclient.cpp owncontrol.cpp guiwindow.cpp rs232.cpp

TARGET:= go
TARGETD:= go_d

OBJECTS:=$(SOURCES_RAW:.cpp=.o)
OBJECTS:=$(patsubst %.o, $(OBJDIR)/%.o, $(OBJECTS))

SOURCES:=$(SOURCES_RAW)
SOURCES:=$(patsubst %.cpp, $(SRCDIR)/%.cpp, $(SOURCES))

all: $(TARGET)

$(TARGET): $(OBJECTS)
    $(CC) -w -D LINUX $(INCLUDE) $^ -o $@ $(LDFLAGS)

release/%.o: src/%.cpp
    test -d $(OBJDIR) || mkdir $(OBJDIR)
    $(CC) -g -c $< $(CFLAGS) -o $@ 

debug: $(TARGETD)

$(TARGETD): $(OBJECTS)
    $(CC) -w -D LINUX $(INCLUDE) $^ -o $@ $(LDFLAGS)

%.o: $(SRCDIR)/%.cpp
    $(CC) -c -g $< $(CFLAGS)-o $@



.PHONY : clean
clean:
    rm -f $(OBJDIR)/*.o
    rm -f $(TARGET) $(TARGETD)

我所做的只是将 OBJDIR 符号更改为“对象”,所以它只是 -

OBJDIR=objects

但是当我这样做时,我得到了错误 -

make: *** No rule to make target `objects/robot_driver_agent.o', needed by `go'.

我错过了什么? “对象”是为make中的某些东西保留的词,所以我不能将它用于目录吗?我需要更改make文件中的内容吗?老实说,我对makefile了解不多,所以任何帮助都会很棒。谢谢。

【问题讨论】:

    标签: directory makefile mkdir


    【解决方案1】:

    你有一个规则:

    release/%.o: src/%.cpp
        ...
    

    这样当OBJDIR=release 和Make 想要构建release/robot_driver_agent.o 时,它就知道该做什么了。然后你尝试OBJDIR=objects,它想要构建objects/robot_driver_agent.o,但它不知道如何构建,因为没有适合的规则。尝试将规则更改为:

    $(OBJDIR)/%.o: src/%.cpp
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2017-10-17
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多