为c ++程序编写Makefile

时间:2011-12-06 22:47:06

标签: c++ makefile

我在NetBeans上编写了c ++程序,现在我想在命令行上在Linux上运行它。如何编写Makefile,编写它的逻辑是什么?

我有3个.cpp文件和2个.hpp文件。

这就是我试图做的事情:

# Makefile

# the C++ compiler
CXX     = g++
CC      = $(CXX)

# options to pass to the compiler
CXXFLAGS = -Wall -ansi -O2 -g
Run: Run.cpp Assessment3.o Student.o
$(CXX) $(CXXFLAGS) Run.cpp Assessment3.o Student.o -o Run

Run: Run.cpp Assessment3.hpp  Assessment3.o Student.o
 $(CXX) $(CXXFLAGS) Run.cpp Assessment3.o Student.o -o Run  

Assessment3.o: Assessment3.cpp Assessment3.hpp
$(CXX) $(CXXFLAGS)  -c Assessment3.cpp

Student.o: Student.cpp Assessment3.o
    $(CXX) $(CXXFLAGS) -c Student.cpp 

它给了我'缺少分隔符。停止。'命令行错误。但这并不是说这是一个错误。 干杯

3 个答案:

答案 0 :(得分:3)

假设您要构建一个名为foo的可执行文件,您可以使用一个简单的makefile,它只需一个依赖项即可一次性构建所有内容:

# makefile 

SRCS = a.cpp b.cpp c.cpp

HDRS = a.h b.h

CXXFLAGS = -Wall

foo: $(SRCS) $(HDRS)
    g++ $(CXXFLAGS) $(SRCS) -o $@

修改

或者,将您的初始makefile放在上面并解决一些小问题:

# Makefile

# the C++ compiler
CXX     = g++
CC      = $(CXX)

# options to pass to the compiler
CXXFLAGS = -Wall -ansi -O2 -g

Run: Run.o Assessment3.o Student.o
    $(CXX) $(CXXFLAGS) Run.o Assessment3.o Student.o -o $@

Run.o: Run.cpp
    $(CXX) $(CXXFLAGS) Run.cpp -o $@  

Assessment3.o: Assessment3.cpp Assessment3.hpp
    $(CXX) $(CXXFLAGS) -c Assessment3.cpp -o $@

Student.o: Student.cpp Student.hpp
    $(CXX) $(CXXFLAGS) -c Student.cpp -o $@

答案 1 :(得分:1)

这可能会有所帮助 http://mrbook.org/tutorials/make/ 对我来说,我使用QtCreator提供的qMake

答案 2 :(得分:0)

“缺少分隔符”错误通常来自在命令前面不使用TAB字符来执行特定目标。请尝试以下方法:

Run: Run.cpp Assessment3.o Student.o
[TAB] $(CXX) $(CXXFLAGS) Run.cpp Assessment3.o Student.o -o Run

当然,您必须插入制表符,而不是[TAB]。