makefile の変更

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 で使用するには、linkxilink に、libxilib に置換します。

 # プログラム名
  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++) です。