[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