我在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
它给了我'缺少分隔符。停止。'命令行错误。但这并不是说这是一个错误。 干杯
答案 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]。