为什么我的Makefile不能创建可执行文件?

时间:2013-02-11 03:43:19

标签: c++ makefile

我在这里说实话,我对以下代码的理解相当有限。但是,据我所知,应该创建某种可执行文件,以便我可以“测试”该程序。但是我要么不确定可执行文件的样子,要么我不确定如何运行它。或者某些东西不起作用。所有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

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

尝试:

make all

编译所有内容。

或者将all::目标置于testBSTree.o:之前,然后您只需输入make即可。如果未指定目标,则make默认为makefile中的第一个目标。

答案 1 :(得分:1)

你有没有运行它     全部

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

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

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

答案 2 :(得分:0)

试试这个Makefile,它对我有用:

OBJS=testBSTree.o BSTree2.o

PROGRAMS = testBSTree

all:  $(PROGRAMS)

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

clean:
    rm *.o

(请注意,缩进的行应使用制表符,而不是空格!)