makefile を使用して Microsoft® アプリケーションをビルドする場合、インテル® C++ コンパイラーを使用するように、コンパイラー変数の値を変更する必要があります。
また、CPPFLAGS で指定されたオプションも確認します。
簡単な例を次に示します。
Microsoft® makefile の例
|
# プログラム名
PROGRAM = area.exe
# ソースファイル名
CPPSOURCES = area_main.cpp area_functions.cpp
# オブジェクト・ファイル名
CPPOBJECTS = area_main.obj area_functions.obj
# Microsoft® コンパイラー・オプション
CPPFLAGS = /RTC1 /EHsc
# Microsoft® C++ コンパイラーを使用する
CPP = cl
# リンク・オブジェクト
$(PROGRAM): $(CPPOBJECTS)
link.exe /out:$@ $(CPPOBJECTS)
# ビルド・オブジェクト
area_main.obj: area_main.cpp area_headers.h
area_functions.obj: area_functions.cpp area_headers.h
# クリーン
clean: del $(CPPOBJECTS) $(PROGRAM)
|
インテル® C++ コンパイラー用に変更した makefile
インテル® C++ コンパイラーで nmake を実行する前に、環境変数を設定する必要があります。
この例では、コンパイラー名のみが変更されています。
例
|
# プログラム名
PROGRAM = area.exe
# ソースファイル名
CPPSOURCES = area_main.cpp area_functions.cpp
# オブジェクト・ファイル名
CPPOBJECTS = area_main.obj area_functions.obj
# # インテル® C++ コンパイラー・オプション
CPPFLAGS = /RTC1 /EHsc
# インテル® C++ コンパイラーを使用する
CPP = icl
# リンク・オブジェクト
$(PROGRAM): $(CPPOBJECTS)
link.exe /out:$@ $(CPPOBJECTS)
# ビルド・オブジェクト
area_main.obj: area_main.cpp area_headers.h
area_functions.obj: area_functions.cpp area_headers.h
# クリーン
clean: del $(CPPOBJECTS) $(PROGRAM)
|
変更された makefile では、nmake の出力は以下のようになります。
Microsoft ® Program Maintenance Utility Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.
icl /RTC1 /EHsc /c area_main.cpp area_functions.cpp
IA-32 対応アプリケーション用 インテル® C++ コンパイラー
Copyright (C) 1985-2006 Intel Corporation. All rights reserved.
area_main.cpp
area_functions.cpp
link.exe /out:area.exe area_main.obj area_functions.obj
Microsoft ® Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.
makefile での IPO の使用
デフォルトでは、IPO はコンパイラーによって使用されるプロシージャー間の情報を含む "仮の" オブジェクト・ファイルを生成します。
これらのオブジェクト・ファイルを使用してスタティック・ライブラリーをリンクまたは作成する場合、特定のインテルにより提供されるツールが必要になります。
これらのツールを makefile で使用するには、"link" を "xilink" に、"lib" を "xilib" に置換します。
例
|
# プログラム名
PROGRAM = area.exe
# ソースファイル名
CPPSOURCES = area_main.cpp area_functions.cpp
# オブジェクト・ファイル名
CPPOBJECTS = area_main.obj area_functions.obj
# # インテル® C++ コンパイラー・オプション
CPPFLAGS = /RTC1 /EHsc /Qipo
# インテル® C++ コンパイラーを使用する
CPP = icl
# オブジェクトをリンクする
$(PROGRAM): $(CPPOBJECTS)
xilink.exe /out:$@ $(CPPOBJECTS)
# オブジェクトをビルドする
area_main.obj: area_main.cpp area_headers.h
area_functions.obj: area_functions.cpp area_headers.h
# クリーン
clean: del $(CPPOBJECTS) $(PROGRAM)
|