option compilation not added with Intel fortran compiler + msvc


I have a big problem to add compilation options with the compiler intel fortran +msvc .
When I add compilation options, they are not taken into account in visual studio (see picture). A certain number of options are put in “additional Option”.

2021-02-11 11_18_53-Matisse - Microsoft Visual Studio|690x250

in my code, I wrote :

    list(APPEND f_compile_flags /names:lowercase /iface:cref /assume:underscore /libs:static /INCREMENTAL:NO /assume:byterecl /Qinit:zero /MT)
target_compile_options(ck_io_fortran PRIVATE ${f_compile_flags})

We can notice that /iface:cref is taken into account but not the other options. What is my error?

Is there a problem with the options not actually applying, or just not being in the proper place in the IDE? I mean, if you run the build, are the options in effect?

CMake’s Visual Studio support translates some flags into dedicated options in the project files. Though I don’t know the specifics, there is the Templates/FlagTables directory in CMake’s source tree. Not seeing anything to do with Fortran though :confused: .

Cc: @brad.king

I think the compilation options are well taken into account (is there a way to see the command line being executed?).

I corrected my list by removing the link flags, but it doesn’t change anything. The problem remains the same.
list(APPEND f_compile_flags /names:lowercase /iface:cref /assume:underscore /libs:static /assume:byterecl /Qinit:zero )

the script https://pypi.org/project/cmake-converter/ converts intel fortran flags to -libs:static. what is the correct syntax between /libs:static and -libs:static? (I tried both but the problem remains the same)

IFort’s default option prefix format is / on Windows and - on Unix, but at least the Windows versions understands both, so it shouldn’t really matter if you use -libs or /libs.

If the options are in effect (as you say), then do you really need them to be in the correct boxes in the vfproj? I understand it would look better, but it’s purely cosmetic: changing them with lasting effect needs to happen in the CMakeLists anyway.