Hi Jochen,
the link https://qbs.io/docs/qml-qbsmodules-cpp/#windowsSdkVersion-prop
states
"By default, the latest SDK is used."
How is the latest one determined? Just by not passing any version to
vcvarsall.bat?
My concrete problem is:
C:\Programs\QtCreator\11.0.8\share\qtcreator\qbs\share\qbs\imports\qbs\Probes\MsvcProbe.qbs:52:16
Could not run
C:/Programs/mvs17/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe
(Process crashed)
Currently I'm looking for a way to see the actual commandline used for
cl.exe. To reproduce the crash ...
Maybe an important detail: this is part of a docker image resp. is
crashing inside a docker container. Running cl.exe standalone looks fine:
> C:/Programs/mvs17/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe
Microsoft (R) C/C++ Optimizing Compiler Version 19.43.34808 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
I've created some dummy file like in MSVC::determineCompilerVersion;
looks good as well:
>
C:/Programs/mvs17/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe
/nologo /EP qbsXXXX.cpp
qbsXXXX.cpp
194334808
Based on what I've found inside "retrieveInstancesFromVSWhere()" the
vswhere command returns:
> "C:\Program Files (x86)\Microsoft Visual
Studio\Installer\vswhere.exe" -products
Microsoft.VisualStudio.Product.BuildTools -format json -utf8
[
{
"instanceId": "3fd400c3",
"installDate": "2025-03-07T06:22:46Z",
"installationName": "VisualStudio/17.13.2+35825.156",
"installationPath": "C:\\Programs\\mvs17",
"installationVersion": "17.13.35825.156",
"productId": "Microsoft.VisualStudio.Product.BuildTools",
"productPath":
"C:\\Programs\\mvs17\\Common7\\Tools\\LaunchDevCmd.bat",
"state": 4294967295,
"isComplete": true,
"isLaunchable": true,
"isPrerelease": false,
"isRebootRequired": false,
"displayName": "Visual Studio Build Tools 2022",
"description": "The Visual Studio Build Tools allows you to
build native and managed MSBuild-based applications without
requiring the Visual Studio IDE. There are options to install the
Visual C++ compilers and libraries, MFC, ATL, and C++/CLI support.",
"channelId": "VisualStudio.17.Release",
"channelUri": "https://aka.ms/vs/17/release/channel",
"enginePath": "C:\\Program Files (x86)\\Microsoft Visual
Studio\\Installer\\resources\\app\\ServiceHub\\Services\\Microsoft.VisualStudio.Setup.Service",
"installedChannelId": "VisualStudio.17.Release",
"installedChannelUri": "https://aka.ms/vs/17/release/channel",
"releaseNotes":
"https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.13#17.13.2",
"resolvedInstallationPath": "C:\\Programs\\mvs17",
"thirdPartyNotices":
"https://go.microsoft.com/fwlink/?LinkId=661288",
"updateDate": "2025-03-07T06:22:46.1065459Z",
"catalog": {
"buildBranch": "d17.13",
"buildVersion": "17.13.35825.156",
"id": "VisualStudio/17.13.2+35825.156",
"localBuild": "build-lab",
"manifestName": "VisualStudio",
"manifestType": "installer",
"productDisplayVersion": "17.13.2",
"productLine": "Dev17",
"productLineVersion": "2022",
"productMilestone": "RTW",
"productMilestoneIsPreRelease": "False",
"productName": "Visual Studio",
"productPatchVersion": "2",
"productPreReleaseMilestoneSuffix": "1.0",
"productSemanticVersion": "17.13.2+35825.156",
"requiredEngineVersion": "3.13.2069.59209"
},
"properties": {
"campaignId": "",
"channelManifestId": "VisualStudio.17.Release/17.13.2+35825.156",
"includeRecommended": "0",
"nickname": "",
"setupEngineFilePath": "C:\\Program Files (x86)\\Microsoft
Visual Studio\\Installer\\setup.exe"
}
}
]
I have to admit that I don't get the calls inside "getMsvcDefines()";
what do I need to run for them on the commandline?
C:/Programs/mvs17/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe
/nologo /B1 %COMSPEC% /c /TC NUL set MSC_CMD_FLAGS
Probably the above is not correct?
/Kind regards,/
Heiko
------------------------------------------------------------------------
*From:* Jochen Ulrich [mailto:jochen.ulr...@bee360.com]
*Sent:* Friday, March 7, 2025 at 8:12 AM
*To:* Heiko Nardmann
*Cc:* qbs@qt-project.org
*Subject:* AW: [Qbs] MSVC based profile: how SDK detection is working?
Hi Heiko!
The winSdkVersioninside MsvcProbe.qbsis an input which is set from the
cpp.windowsSdkVersionproperty (see
https://qbs.io//docs/qml-qbsmodules-cpp/#windowsSdkVersion-prop
<https://qbs.io/docs/qml-qbsmodules-cpp/#windowsSdkVersion-prop>).
As it seems to me, the “detection” of the SDK version is done by MSVC
itself. So, if you don’t set the cpp.windowsSdkVersionexplicitly, then
Qbs doesn’t know which SDK version it is working with. If you set it,
then Qbs simply passes this to vcvarsall.batto figure out the
necessary environment variables (see vsenvironmentdetector.cpp, line
243-244
<https://code.qt.io/cgit/qbs/qbs.git/tree/src/lib/corelib/tools/vsenvironmentdetector.cpp#n243>).
Best
Jochen
*Von: *Qbs <qbs-boun...@qt-project.org> im Auftrag von Heiko Nardmann
<heiko.nardm...@itechnical.de>
*Datum: *Donnerstag, 6. März 2025 um 18:17
*An: *qbs@qt-project.org <qbs@qt-project.org>
*Betreff: *[Qbs] MSVC based profile: how SDK detection is working?
Hi together,
I'm currently fighting with getting Qbs working with MSVC 2022.
Somehow the probing fails and I wonder whether this has sth to do with
the SDK version: that is shown as being undefined when dumping it
inside MsvcProbe.qbs.
So ... how do I tell Qbs which Windows SDK version to use? Or how is
the detection working wrt. this?
/Kind regards,/
Heiko
_______________________________________________
Qbs mailing list
Qbs@qt-project.org
https://lists.qt-project.org/listinfo/qbs