CCFLAGS 環境変数か make を使って特別なシェル別名を定義すれば、複雑なコンパイラコマンドを簡略化できます。
次の例では、頻繁に使用するオプションをコマンドの別名として定義します。
demo% alias CCfx "CC -fast -xnolibmil"
demo% CCfx any.C
上記のコマンド CCfx は、次のコマンドを実行するのと同じことです。
demo% CC -fast -xnolibmil any.C
CCFLAGS 環境変数を設定すると、一度に特定のオプションを指定できます。
CCFLAGS 変数は、コマンド行に明示的に指定できます。次の例は、CCFLAGS の設定方法を示したものです (C シェル)。
demo% setenv CCFLAGS '-silent -fast -Xlist'
demo% CC $CCFLAGS any.cc
make を使用する場合、CCFLAGS 変数が上の例のように設定され、メークファイルのコンパイル規則が暗黙的に使用された状態で make を呼び出すと、次のコンパイルが行われます (files は、複数のファイル名を示します)。
CC -silent -fast -Xlist files...
make は、サンのすべてのコンパイラで簡単に使用できる非常に強力なプログラム開発ツールです。詳細については make(1) のマニュアルページを参照してください。
メークファイルの暗黙のコンパイラ規則を使用する (つまり、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 ファイルは istream、fstream のような名前で、.h 接尾辞は付いていません。また、テンプレートのソースファイルは、istream.cc、fstream.cc といった名前になります。このため、<istream> などの標準の iostream ヘッダーがプログラムにインクルードされていて、メークファイルに .KEEP_STATE がある場合は問題になります。たとえば、<istream> がインクルードされている場合、make は istream が実行可能ファイルであるとみなし、istream.cc から istream を構築するときにデフォルトの規則を使用します。このため、非常に誤解を生みやすいエラーメッセージが返されます (istream および istream.cc はともに、SC5.0/include/CC にインストールされます)。make がデフォルトの規則を使わないようにするには、-r オプションを使用してください。