'/fp:fast' and '/Za' not compatible Visual C++
-
06-06-2021 - |
Question
I am stuck with a problem in Visual 2008 SP1.
The compiler yields:
'/fp:fast' and '/Za' are not compatible
The problem is that i did NOT use /Za in the properties.. so I don't get why there should be a conflict when the option isn't set.
here is the generated command line in my project properties :
/Od /I "..\..\..\..\..\tools\gsoap-soapcpp-2.7.6\src" /I "..\..\..\..\..\platform\vs2008\win32\gsoap-soapcpp-2.7.6\src"
/D "WIN32" /D "_DEBUG" /D
"_CONSOLE" /D "YY_NO_UNISTD_H" /D "_WIN32_WCE=0x700" /D "UNDER_CE" /D "WINCE" /D
"DEBUG" /D "ARM" /D "_ARM_" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /MTd /fp:fast /GR-
/Fo"Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53/" /Fd"Freescale i.MX53 QSB - WEC7
(ARMv4I)\Debug IMX53/vc80.pdb" /W3 /nologo /c /TP /wd4996
As you can see, /fp:fast is set but not /Za.
Is there another option that might indirectly refer to /Za ?
After digging a bit more, i realised that the BuildLog.htm file was saying :
Creating temporary file "(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000341365424.rsp" with content
[{CORRECT COMMAND LINE}
{list of source files paths}
]
Creating command line "cl.exe @"(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000341365424.rsp" /nologo"
Creating temporary file "(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000441365424.rsp" with content
[
{WRONG COMMAND LINE containing /Za}
{list of source files paths}
]
Creating command line "cl.exe @"(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000441365424.rsp"/nologo"
Do you have any idea why this second temporary file might be created ? Is there a property I have to fix in my project ?
[EDIT] Thanks to Hans I figured out the problem. One of my files in the project had a different compiler option that I was unaware of which caused the problem. I found which one it was thanks to the buildlog.htm file
Solution
Seeing the compiler getting started more than once is a strong hint to the source of the problem. You probably have some source code files in the project that have /Za turned on individually. A quick fix is to select all the files in the project with Shift+Click and resetting the option.
OTHER TIPS
In Visual Studio 2008, Project -> Properties -> Configuration Properties -> C/C++ -> Language, change "Disable Language Extensions" from "Yes(/Za)" to "No".
My guess is that you are using the wrong version of WinCE for VS2008 - you appear to be compiling for ARM here, yes? My suspicions are aroused by the reference to vc80.pdb
which is on the face of it a VS2005 vintage symbol file. Maybe this is a VS2005 project that you are porting across?
The question here indicates you should not manually define _WIN32_WCE
, you could try the suggestion it provides for correlating this to the correct Platform SDK definition.