Developer Guide and Reference

Contents

Modifying Your makefile

If you use makefiles to build your Microsoft* application, you need to change the value for the compiler variable to use the
Intel® oneAPI
DPC++/C++
Compiler
. You may also want to review the options specified by
CPPFLAGS
. A simple example follows:
Microsoft makefile Example
# name of the program PROGRAM = area.exe # names of source files CPPSOURCES = area_main.cpp area_functions.cpp # names of object files CPPOBJECTS = area_main.obj area_functions.obj # Microsoft(R) compiler options CPPFLAGS = /RTC1 /EHsc # Use Microsoft C++(R) CPP = cl # link objects $(PROGRAM): $(CPPOBJECTS)      link.exe /out:$@ $(CPPOBJECTS) # build objects area_main.obj: area_main.cpp area_headers.h area_functions.obj: area_functions.cpp area_headers.h # clean clean: del $(CPPOBJECTS) $(PROGRAM)

Modified makefile for the
Intel® oneAPI
DPC++/C++
Compiler

Before you can run
nmake
with the
Intel® oneAPI
DPC++/C++
Compiler
, you need to set the proper environment. In this example, only the name of the compiler changed:
Example
# name of the program PROGRAM = area.exe # names of source files CPPSOURCES = area_main.cpp area_functions.cpp # names of object files CPPOBJECTS = area_main.obj area_functions.obj # # Intel(R) C/C++/DPC++ Compiler options CPPFLAGS = /RTC1 /EHsc # Use the Intel(R) C/C++/DPC++ Compiler CPP = [invocation] # link objects $(PROGRAM): $(CPPOBJECTS)      link.exe /out:$@ $(CPPOBJECTS) # build objects area_main.obj: area_main.cpp area_headers.h area_functions.obj: area_functions.cpp area_headers.h # clean clean: del $(CPPOBJECTS) $(PROGRAM)
With the modified makefile, the output of
nmake
is similar to the following:
Microsoft (R) 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(R) 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 (R) Incremental Linker Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved.

Using IPO in makefiles

By default, IPO generates dummy object files containing interprocedural information used by the compiler. To link or create static libraries with these object files requires specific Intel-provided tools. To use them in your makefile, replace references to
link
with
xilink
and references to
lib
with
xilib
:
Example
# name of the program PROGRAM = area.exe # names of source files CPPSOURCES = area_main.cpp area_functions.cpp # names of object files CPPOBJECTS = area_main.obj area_functions.obj # Intel C/C++/DPC++ Compiler options CPPFLAGS = /RTC1 /EHsc /Qipo # Use the Intel C/C++/DPC++ Compiler CPP = [invocation] # link objects $(PROGRAM): $(CPPOBJECTS) xilink.exe /out:$@ $(CPPOBJECTS) # build objects area_main.obj: area_main.cpp area_headers.h area_functions.obj: area_functions.cpp area_headers.h # clean clean: del $(CPPOBJECTS) $(PROGRAM)
Where [
invocation
] is
icx
for C++ or
dpcpp-cl
for DPC++
.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.