Okay, found https://bugreports.qt.io/browse/QBS-1743.


/Kind regards,/

  Heiko
------------------------------------------------------------------------
*From:* Heiko Nardmann [mailto:heiko.nardm...@itechnical.de]
*Sent:* Friday, March 7, 2025 at 1:33 PM
*To:* qbs@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.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

Reply via email to