[Qbs] MSVC based profile: how SDK detection is working?
Heiko Nardmann
heiko.nardmann at itechnical.de
Fri Mar 7 14:02:34 CET 2025
Okay, found https://bugreports.qt.io/browse/QBS-1743.
/Kind regards,/
Heiko
------------------------------------------------------------------------
*From:* Heiko Nardmann [mailto:heiko.nardmann at itechnical.de]
*Sent:* Friday, March 7, 2025 at 1:33 PM
*To:* qbs at qt-project.org
*Subject:* [Qbs] MSVC based profile: how SDK detection is working?
> 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.ulrich at bee360.com]
> *Sent:* Friday, March 7, 2025 at 8:12 AM
> *To:* Heiko Nardmann
> *Cc:* qbs at 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-bounces at qt-project.org> im Auftrag von Heiko Nardmann
>> <heiko.nardmann at itechnical.de>
>> *Datum: *Donnerstag, 6. März 2025 um 18:17
>> *An: *qbs at qt-project.org <qbs at 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
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20250307/5819833e/attachment-0001.htm>
More information about the Qbs
mailing list