0

老实说,我对以下代码的理解相当有限。但是,据我所知,它应该创建某种可执行文件,以便我可以“测试”该程序。但我要么不确定可执行文件的外观,要么不确定如何运行它。或者有些东西不工作。makefile 所做的只是创建一个 testBSTree.o,我真的不知道如何处理该文件。

#  Makefile
#    a makefile for the stack example.
#

#            SHELL =    /bin/sh

#              TOP = .
#      CURRENT_DIR = .

#              CPP = /lib/cpp $(STD_CPP_DEFINES)
              CXX  = g++

#        CCOPTIONS =
#           CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)
#           RM_CMD = $(RM) *.o core

SRCS=   testBSTree.cpp  \
    BSTree2.cpp

OBJS=   testBSTree.o    \
    BSTree2.o       

testBSTree.o:   BSTree2.h

BSTree2.o:  BSTree2.h      #?

#link.o:    link.h                  #?

PROGRAMS = testBSTree

all::  $(PROGRAMS)


testBSTree: $(OBJS)
    $(CXX) -o $@ $(OBJS)
#$(CXX) -o $@ $(OBJS) $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS)  $(EXTRA_LOAD_FLAGS)

clean::
    $(RM) testBSTree

latex::
    latex BSTree2.tex

###########################################################################
# common rules for all Makefiles - do not edit

emptyrule::

clean::
        rm *.o

任何帮助将不胜感激。谢谢!

4

3 回答 3

1

尝试:

make all

编译一切。

或者把all::目标放在前面testBSTree.o:,然后你就可以键入make。如果不指定目标,make则默认为 makefile 中的第一个目标。

于 2013-02-11T04:04:27.997 回答
1

你用 make all 运行它了吗

否则,Make 只会选择您的第一个目标 testBSTree.o:BSTree2.h

发现 testBSTree.o 不是最新的,构建它并愉快地完成它的工作。

作为替代方案,您可能希望将所有目标作为第一个目标,因此您只需运行 make。这就是通常的做法。

于 2013-02-11T04:04:33.113 回答
0

Try this Makefile, it works for me:

OBJS=testBSTree.o BSTree2.o

PROGRAMS = testBSTree

all:  $(PROGRAMS)

testBSTree: $(OBJS)
    $(CXX) -o $@ $^

clean:
    rm *.o

(Note that the indented lines should be intended with a tab, not with spaces!)

于 2013-02-11T04:10:58.667 回答