- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have a big visual studio solution containing c++ and fortran projects. The solution is built using devenv from the command line.
I have several fortran compilers installed (2013 and 2015). How can I select which compiler to use at build time, from the command line?
I am aware of the option from Tool-Options-Intel compilers and tools, but I have found no way to do this from the command line.
Thanks,
Jens
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Each fortran version has its own command prompt on the start menu doesn't it? I can't check as I uninstalled all my many old versions recently. I would guess that if you run in the relevant command prompt you get that compiler.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm not using the fortran compiler executable, I'm using devenv from the command line as I need to build the entire solution at once.
Yes, I could of course create my own build script to control which fortran compiler to invoke, but I want to use devenv as automatic as possible.
Jens
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
From within the relevant command prompt for the compiler version of interest, add the /useenv switch to the devenv command line that you use to start the build.
I expect mild chaos to result if the platform of the command line that you are working in does not match the platform that you build.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
/useenv is only for the C++ env. variables and libraries, no?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ian's suggestion is exactly what you want to do. It will establish the Fortran environment that you have selected from the command prompt.
Note that the build log and output won't correctly identify the compiler version being used, so don't pay attention to that. You can set the property Fortran > General > Suppress Startup Banner to No to get the compiler to tell you which version it is using. I'll warn that the VS integration might use compiler options not supported in older versions if you do it this way.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, I think I understand now. Thanks.
Is it possible to set the environment variables in a windows command prompt, so that this windows command prompt effectively is equivalent to a intel fortran compiler command prompt?
I'm using teamcity to build my vs solution, so I do not have easy access to an intel fortran command prompt.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In your chosen command prompt, use:
call "path-to-version-specific-compilervars,bat" platformname vsversion
where platformname is ia32 or intel64 and vsversion is the version of VS you want to use (vs2010, vs2012, etc.)
For example:
call "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.2.180\windows\bin\compilervars.bat" intel64 vs2013
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks! This seems to work for the fortran compiler.
However, it breaks something regarding the c++ compiler. With /useenv I get the following error message for the c++ projects:
TRACKER : error TRK0002: Failed to execute command: ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\CL.exe" @C:\Users\JEFT\AppData\Local\Temp\tmpf3e0b205768041b6a3d590dbee6c5b75.rsp". The handle is invalid.
Any idea?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I can't imagine what would be the problem here. All of the VS environment should be set up. The error you got does not suggest an environment problem but maybe some background process interfering with temporary files.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ok, thanks.
I also get this warning at the beginning of the build (after selecting the intel compiler 2015 environment for intel64, vs2010): Package 'Intel.Fortran.IFLangService.IFLangServicePackage, IFLangService, Version=16.0.0.0, Culture=neutral, PublicKeyToken=null' failed to load.
But that seems to be unrelated to my other issue.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Some additional information:
I want to build the c++ projects in my solution using vs2010 sp1. I know there is a significant difference between sp1 and not. Is this an issue?
I also have vs2013 and vs2015 installed. Does this imply any potential conflicts?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have seen the IFLangService warning but haven't noticed any ill effects of that. You should definitely use the latest SP of VS2010 - especially SP1 as that changed many things Fortran uses. That you also have VS2013 and 2015 does not matter.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I was using
compilervars.bat intel64 vs2010,
However, with
compilervars.bat ia32_intel64 vs2010,
everything builds. Does this make sense? Do I need to use this "cross toolset" when the ms compiler itself is x86 but compiling for x64?
One additional question though: I now get, for every cpp file being compiler, the message "You are using an Intel supplied intrinsic header file with a third-party compiler." What does this mean?
Best,
Jens
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have a theory on the compilervars issue - let me dig into this and I'll get back to you.
When you use the Intel compilervars (and have Intel C++ installed), the include path includes Intel C++ headers that may not be right for MSVC. You can ask in the C++ forum whether or not this is important - I don't know.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Okay, thanks!
One thing occured to me: What if I wanted to use the intel c++ compilers as well, how would I go about setting up that from the command line? I notice that there's also an ifortvars.bat script - would that do anything different?
Jens
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
compilervars.bat gives you both Intel Fortran and C++. But in VS you'd need to right click on your C++ project and select "Use Intel C++" (it's in some Intel submenu - I forget exactly.) ifortvars.bat does the same thing as compilervars.bat.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page