makefile を使用して Microsoft* アプリケーションをビルドする場合、インテル® oneAPI DPC++/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)
|
変更したインテル® oneAPI DPC++/C++ コンパイラーの makefile
インテル® oneAPI DPC++/C++ コンパイラーで nmake を実行する前に、環境変数を設定する必要があります。この例では、コンパイラー名のみが変更されています。
例
|
# プログラム名
PROGRAM = area.exe
# ソースファイル名
CPPSOURCES = area_main.cpp area_functions.cpp
# オブジェクト・ファイル名
CPPOBJECTS = area_main.obj area_functions.obj
# # インテル® C / C++ / DPC++ コンパイラー・オプション
CPPFLAGS = /RTC1 /EHsc
# インテル® C / C++ / DPC++ コンパイラーを使用する
CPP = [invocation]
# リンク・オブジェクト
$(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.
icx /RTC1 /EHsc /c area_main.cpp area_functions.cpp
Intel® Compiler for applications running on IA-32 or IA-64
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 / C++ / DPC++ コンパイラー・オプション
CPPFLAGS = /RTC1 /EHsc
# インテル® C / C++ / DPC++ コンパイラーを使用する
CPP = [invocation]
# リンク・オブジェクト
$(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)
|
[invocation] は icpx (C++) または dpcpp (DPC++) です。