私は、メインと他の多くの関数を含む1つのcppファイルで不完全に書かれたC++コードをいくつか継承しました。クラスとその関数定義を含む.h
ファイルもあります。
これまで、プログラムはコマンドg++ main.cpp
を使用してコンパイルされていました。クラスを.h
ファイルと.cpp
ファイルに分離したので、メイクファイルを使用する必要がありますか、それともg++ main.cpp
コマンドを使用できますか?
main.cppの後の他のすべてのcppファイルをリストします。
すなわち
g++ main.cpp other.cpp etc.cpp
等々。
または、すべて個別にコンパイルできます。次に、結果の「.o」ファイルをすべてリンクします。
リンクせずに個別にコンパイルするには、-c
オプションを追加する必要があります。
g++ -c myclass.cpp
g++ -c main.cpp
g++ myclass.o main.o
./a.out
クラスを.hファイルと.cppファイルに分離したので、メイクファイルを使用する必要がありますか、それとも「g ++ main.cpp」コマンドを使用できますか?
一度に複数のファイルをコンパイルするのは、Makefileに入れようとする場合には適切な選択ではありません。
通常、Makefileでは( GNU/Make の場合)、次のように記述するだけで十分です。
# "all" is name of the default target, running "make" without params would use it
all: executable1
# for C++, replace CC (c compiler) with CXX (c++ compiler) which is used as default linker
CC=$(CXX)
# tell which files should be used, .cpp -> .o make would do automatically
executable1: file1.o file2.o
そうすれば、make
は再コンパイルが必要なものだけを適切に再コンパイルします。また、いくつかの調整を追加してヘッダーファイルの依存関係を生成することもできます。これにより、makeはヘッダーファイルの変更により再構築する必要があるものも適切に再構築します。
必要に応じて、g ++を直接使用できます。
g++ f1.cpp f2.cpp main.cpp
ここで、f1.cppおよびf2.cppは、それらの関数を含むファイルです。 makeを使用してビルドを行う方法の詳細については、優れた GNU make documentation を参照してください。
私はこの質問が何年も前に尋ねられたことを知っていますが、それでも私が通常複数のc ++ファイルをコンパイルする方法を共有したかったです。
g++ -c *.cpp -o myprogram
)。"myprogram"
を生成します./myprogram
を実行しますそれで全部です!!
*を使用している理由は、30個のcppファイルがある場合、それらすべてを入力するとどうなるかということです。または単に*記号を使用して時間を節約します:)
p.sこの方法は、メイクファイルを気にしない場合にのみ使用してください。
.h
ファイルはコンパイルとは何の関係もありません... cppファイルのことしか気にしないので... g++ filename1.cpp filename2.cpp main.cpp -o myprogram
と入力します
つまり、各cppファイルをコンパイルし、それらをmyprgram
にリンクします。
次にプログラムを実行します./myprogram
複数のg ++コマンドを使用してリンクできますが、最も簡単な方法は、Scons(Makefileよりもセットアップが簡単な場合が多い)などの従来のMakefileまたは他のビルドシステムを使用することです。
以前は現在のディレクトリにあるすべてのファイルをコンパイルしたカスタムMakefileを使用していましたが、必要なすべてのディレクトリに毎回コピーする必要がありました。
そこで、独自のツールを作成しました- niversal Compiler これにより、多くのファイルをコンパイルする際のプロセスがはるかに簡単になりました。
rebenvpが言ったように私は使用しました:
g++ *.cpp -o output
そして、出力のためにこれを行います:
./output
しかし、より良い解決策はmake
ファイルを使用することです。 make
ファイルの詳細については、 here をお読みください。
また、必要な.h
ファイルを.cpp
ファイルに追加したことを確認してください。