2011-12-14 49 views

回答

5

这取决于你的编译器。例如,使用GCC,你可能会写:

g++ foo.cpp bar.cpp baz.cpp -o foo # compile program 
./foo        # run program 
+0

我提到-Wall&-g这是非常有用的。 – 2011-12-15 01:10:22

+0

非常感谢,这正是我想要的。 – Sohrab 2011-12-15 03:27:44

1

但是真正的答案是使用一些构建机器,有一个Makefile和使用GNU Make

有一些比GNU更好的建设者做,像Omake

建设者是非常有用的,因为在example通过ruakh你可能不想重新编译foo.cpp当只有bar.cpp改变,所以你需要采取依赖关系。

(也有的Makefile发电机,像automakecmake ...)

3

Basile's right on, you need build machinery有软件,你可以很容易地努力。你真的希望能够运行make或类似的东西,并以可重复的方式快速重建项目。您还希望确保您的整个项目保持最新状态,重建所有依赖于已发生变化的事情。虽然你可以只保留一个包含g++行的shell脚本,如ruakh's answer,但这将会不必要地重新编译超过你的需要。 (这对小项目来说并不是什么大事,但当项目变得比平凡更重要时就变得很重要。)

我只花了15分钟浏览了OMake文档,但它看起来很有希望。 make在系统上是标准的,并且提供了大量预定义的构建规则,包括C++规则,所以编写项目新的Makefile并不是很困难。

它会是这个样子:

# the compiler and its flags 
CXX = g++ 
CXXFLAGS = -Wall 

PROGRAM = foo 

OBJECTS = foo_a.o foo_b.o foo_c.o foo_d.o 

.PHONY: all 

.DEFAULT: all 

all: $(PROGRAM) 

$(PROGRAM): $(OBJECTS) 

的对象foo_a.o将从名为foo_a.cfoo_a.ccfoo_a.Cfoo_a.cppfoo_a.pfoo_a.ffoo_a.F相应的源文件,等建成,对于C ,C++,Fortran,Pascal,Lex,Yacc等。

O'Reilly make book此时此刻已经过时了, .SUFFIX规则已被pattern rules代替,但O'Reilly书中没有涵盖模式规则。也就是说,如果整个GNU Make documentation不适合你,它仍然是一个很好的起点。

相关问题