2011-12-14 11 views

答えて

5

これはコンパイラによって異なります。

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

私は-Wall&-gと言いますが、これは非常に便利です。 –

+0

本当にありがとうございました。 – Sohrab

+0

g ++ * .cpp – Sohrab

1

をしかし、本当の答えは、例えばのように、いくつかのビルド機械を使用することです。たとえば、GCCであなたが書くかもしれませんMakefileがあり、GNU Makeを使用してください。

exampleによってruakhであなただけbar.cppはそうあなたが取る必要が変更されたときにfoo.cppを再コンパイルしたくない場合があるためOmake

ビルダーは、非常に便利ですのようなGNUは作るよりも、いくつかの優れたビルダーはありますが、依存関係を考慮する。あなたは簡単に作業できるソフトを持っている

(およびのMakefile発電機はautomakecmakeのように、そこにある...)

3

Basile's right on, you need build machinery本当にmakeなどを実行し、プロジェクトを再現性のある方法ですばやく再構築できるようにしたいと考えています。また、プロジェクト全体が最新の状態に保たれ、変更されたものに依存するすべてのものが再構築されることを確認する必要があります。 ruakh's answerのように、g++行のシェルスクリプトを残しておくことはできますが、これは必要以上に再コンパイルされます。 (小規模なプロジェクトでは大したことではありませんが、プロジェクトが自明ではない場合には重要になります)

OMakeのドキュメントをスキップするのに15分しかかかりませんでしたが、非常に有望です。 makeはシステムの標準であり、C++のルールを含む膨大な配列ルールを提供しているので、プロジェクトに新しいMakefileを書くことはあまり難しくありません。

それはこのようなものを見てみましょう:Cのために、

# 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.cという名前の、対応するソースファイルから構築されますfoo_a.oオブジェクト、foo_a.ccfoo_a.Cfoo_a.cppfoo_a.pfoo_a.ffoo_a.Fなど、C++、Fortran、Pascal、Lex、Yaccなどがあります。

O'Reilly make bookはこの時点で残念ながらかなり古いです。 .SUFFIXの規則はpattern rulesに取って代わられましたが、O'Reillyの本にはパターン規則の適用範囲がありません。それは完全なGNU Make documentationがあなたのために適切でないなら、それはまだ良い出発点です。

+0

私の 'Makefile'に' CXXFLAGS'と 'CXX'を追加しました –

+0

しかし、私はGNU Makeのドキュメントを読みやすくしています。 –

+0

おかげさまでBasile!私は、特定のものを探すためのGNU Makeのドキュメントを気に入っていますが、O'Reillyの本を最初に読んでから、GNUのドキュメンテーションを通して私の道を歩まなかったことを認めなければなりません。 – sarnold

関連する問題