Quantcast
Channel: Intel® Software - Intel® C++ Compiler
Viewing all articles
Browse latest Browse all 2797

Specifying include files via `-I` option and via `INCLUDE` environment variable [ICL 16.0]

$
0
0

Problem description

I have different compilation results when specify directories to search for include files via `-I` compiler option and `INCLUDE` environment variable.

Settings

Windows 10 x64 with MSFT VS 2015 Update 2, Intel Parallel Studio XE 2016 Update 2 and Windows 10 SDK 10.0.10586 installed.

Steps to reproduce

Create sample source file (name it 'sample.cpp'):

#include <stdio.h>
#include <Windows.h>

int main()
{
    printf("hello, world!");
    return 0;
}

The code above doesn’t require ‘Windows.h’ header but it should be included to show the issue.

Now open Intel compiler “shell” (“Compiler 16.0 Update 2 for Intel 64 Visual Studio 2015 environment” or “Compiler 16.0 Update 2 for IA-32 Visual Studio 2015 environment” shortcut in Start menu).

Check value of `INCLUDE` variable. I have the following (I've added line breaks for convenience):

>set INCLUDE
INCLUDE=C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\compiler\include;
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\compiler\include\intel64;
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE;
C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\ucrt;
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;
C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\shared;
C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um;
C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\winrt;
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\ipp\include;
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\mkl\include;
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\tbb\bin\..\include;
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\daal\include;
C:\Program Files (x86)\IntelSWTools\Trace Analyzer and Collector\9.1.2.024\include;

Now compile the code with:

>icl -c sample.cpp

Output is:

Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0.2.180 Build 20160204
Copyright (C) 1985-2016 Intel Corporation.  All rights reserved.

sample.cpp

OK, that’s how it should be. I got the object file.

Now let’s duplicate `INCLUDE` environment variable value with `-I` options and disable the former with -X (or one could do `set INCLUDE=` and omit `-X`):

>icl -c -X "-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\compiler\include""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\compiler\include\intel64""-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE""-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE""-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\ucrt""-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um""-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\shared""-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um""-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\winrt""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\ipp\include""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\mkl\include""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\tbb\bin\..\include""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\daal\include""-IC:\Program Files (x86)\IntelSWTools\Trace Analyzer and Collector\9.1.2.024\include"
sample.cpp

Once again I've added line breaks so the entire command can be easily read. This is the same calling of the compiler posted as is, as one line:

>icl -c -X "-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\compiler\include""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\compiler\include\intel64""-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE""-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE""-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\ucrt""-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um""-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\shared""-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um""-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\winrt""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\ipp\include""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\mkl\include""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\tbb\bin\..\include""-IC:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\daal\include""-IC:\Program Files (x86)\IntelSWTools\Trace Analyzer and Collector\9.1.2.024\include" sample.cpp

Here is the compilation output:

Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0.2.180 Build 20160204
Copyright (C) 1985-2016 Intel Corporation.  All rights reserved.

sample.cpp
C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\heapapi.h(107): error #1292: unknown attribute "allocator"
  DECLSPEC_ALLOCATOR
  ^

C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\heapapi.h(121): error #1292: unknown attribute "allocator"
  DECLSPEC_ALLOCATOR
  ^

C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\winbase.h(944): error #1292: unknown attribute "allocator"
  DECLSPEC_ALLOCATOR
  ^

C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\winbase.h(960): error #1292: unknown attribute "allocator"
  DECLSPEC_ALLOCATOR
  ^

C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\winbase.h(1079): error #1292: unknown attribute "allocator"
  DECLSPEC_ALLOCATOR
  ^

C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\winbase.h(1089): error #1292: unknown attribute "allocator"
  DECLSPEC_ALLOCATOR
  ^

C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\winbase.h(8809): warning #3199: "defined" is always false in a macro expansion in Microsoft mode
  #if MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS  /* { */
      ^

C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\winioctl.h(2705): warning #94: the size of an array must be greater than zero
      BYTE  SerialNumber[0];
                         ^

C:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um\winioctl.h(2883): warning #94: the size of an array must be greater than zero
              BYTE  ParameterList[0];
                                  ^

compilation aborted for sample.cpp (code 2)

I want to emphasize: my problem is not errors themselves, but their occurrence. Why do I have any errors with `-I` options while I have no errors at all when I use corresponding `INCLUDE` environment variable?


Viewing all articles
Browse latest Browse all 2797

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>