C++ ユーザーズガイド

コマンドの簡略化

CCFLAGS 環境変数か make を使って特別なシェル別名を定義すれば、複雑なコンパイラコマンドを簡略化できます。

C シェルでの別名の使用

次の例では、頻繁に使用するオプションをコマンドの別名として定義します。


demo% alias CCfx "CC -fast -xnolibmil"

次に、この別名 CCfx を使用します。


demo% CCfx any.C

上記のコマンド CCfx は、次のコマンドを実行するのと同じことです。


demo% CC -fast -xnolibmil any.C

CCFLAGS によるコンパイルオプションの指定

CCFLAGS 環境変数を設定すると、一度に特定のオプションを指定できます。

CCFLAGS 変数は、コマンド行に明示的に指定できます。次の例は、CCFLAGS の設定方法を示したものです (C シェル)。


  demo% setenv CCFLAGS '-silent -fast -Xlist'

次の例では、CCFLAGS を明示的に使用しています。


  demo% CC $CCFLAGS any.cc

make を使用する場合、CCFLAGS 変数が上の例のように設定され、メークファイルのコンパイル規則が暗黙的に使用された状態で make を呼び出すと、次のコンパイルが行われます (files は、複数のファイル名を示します)。

CC -silent -fast -Xlist files...

make の使用

make は、サンのすべてのコンパイラで簡単に使用できる非常に強力なプログラム開発ツールです。詳細については make(1) のマニュアルページを参照してください。

make での CCFLAGS の使用

メークファイルの暗黙のコンパイラ規則を使用する (つまり、C++ コンパイル行がない) 場合は、make プログラムによって CCFLAGS が自動的に使用されます。

メークファイルへの接尾辞の追加

メークファイルに別のファイルの接尾辞を追加すると、C++ にその接尾辞を取り込むことができます。次の例は、C++ ファイルに対する有効な接尾辞として .C を追加します。次のように、メークファイルに SUFFIXES マクロを追加してください。

.SUFFIXES: .cpp .cpp‾

(この行は、メークファイル内のどこにでも入れることができます。)

次の内容をメークファイルに追加します。インデントされている行は、必ずタブでインデントしてください。


.cpp:
    $(LINK.cc) -o $@ $< $(LDLIBS)
.cpp‾:
    $(GET) $(GFLAGS) -p $< > $*.cpp
    $(LINK.cc) -o $@ $*.cpp $(LDLIBS)
.cpp.o:
    $(COMPILE.cc) $(OUTPUT_OPTION) $<
.cpp‾.o:
    $(GET) $(GFLAGS) -p $< > $*.cpp
    $(COMPILE.cc) $(OUTPUT_OPTION) $<
.cpp.a:
    $(COMPILE.cc) -o $% $<
    $(COMPILE.cc) -xar $@ $%
    $(RM) $%
.cpp‾.a:
    $(GET) $(GFLAGS) -p $< > $*.cpp
    $(COMPILE.cc) -o $% $<
    $(COMPILE.cc) -xar $@ $%
    $(RM) $%

iostream に対する make の使用

標準の iostream ファイルは istreamfstream のような名前で、.h 接尾辞は付いていません。また、テンプレートのソースファイルは、istream.ccfstream.cc といった名前になります。このため、<istream> などの標準の iostream ヘッダーがプログラムにインクルードされていて、メークファイルに .KEEP_STATE がある場合は問題になります。たとえば、<istream> がインクルードされている場合、makeistream が実行可能ファイルであるとみなし、istream.cc から istream を構築するときにデフォルトの規則を使用します。このため、非常に誤解を生みやすいエラーメッセージが返されます (istream および istream.cc はともに、SC5.0/include/CC にインストールされます)。make がデフォルトの規則を使わないようにするには、-r オプションを使用してください。