diff options
author | Ivan Komissarov <ABBAPOH@gmail.com> | 2020-02-02 07:06:57 +0100 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2020-02-14 18:19:21 +0000 |
commit | 5adf0d5e8928c1d195d0725195fda86c21e88598 (patch) | |
tree | defac862563935ec37ecd556a5e00e045fe6d1ca /share | |
parent | bc01b6cc3dc1ee77cfcc3438d8e0d8985016cb65 (diff) |
Autotedect MSVC compiler by using a probe
This allows to build projects without calling "qbs setup-toolchains"
first by simply calling "qbs build".
Change-Id: Iba4af8bf77d0ee5d209564ea371328d3c6cf2aa2
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'share')
-rw-r--r-- | share/qbs/imports/qbs/Probes/ClBinaryProbe.qbs | 71 | ||||
-rw-r--r-- | share/qbs/modules/cpp/windows-msvc.qbs | 3 |
2 files changed, 73 insertions, 1 deletions
diff --git a/share/qbs/imports/qbs/Probes/ClBinaryProbe.qbs b/share/qbs/imports/qbs/Probes/ClBinaryProbe.qbs new file mode 100644 index 000000000..bcaa9d1f7 --- /dev/null +++ b/share/qbs/imports/qbs/Probes/ClBinaryProbe.qbs @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2020 Ivan Komissarov (abbapoh@gmail.com) +** Contact: http://www.qt.io/licensing +** +** This file is part of Qbs. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +import qbs.FileInfo +import qbs.ModUtils +import qbs.Utilities +import "path-probe.js" as PathProbeConfigure + +BinaryProbe { + // input + property string preferredArchitecture; + + configure: { + var _selectors; + var results = PathProbeConfigure.configure(_selectors, names, nameSuffixes, nameFilter, + candidateFilter, searchPaths, pathSuffixes, + platformSearchPaths, environmentPaths, + platformEnvironmentPaths, pathListSeparator); + if (!results.found) { + var msvcs = Utilities.installedMSVCs(preferredArchitecture); + if (msvcs.length >= 1) { + var result = {}; + result.fileName = "cl.exe"; + result.path = msvcs[0].binPath; + result.filePath = FileInfo.joinPaths(path, fileName); + result.candidatePaths = result.filePath; + results.found = true; + results.files = [result]; + } + } + + found = results.found; + allResults = results.files; + + if (allResults.length === 1) { + var result = allResults[0]; + candidatePaths = result.candidatePaths; + path = result.path; + filePath = result.filePath; + fileName = result.fileName; + } + + } +} diff --git a/share/qbs/modules/cpp/windows-msvc.qbs b/share/qbs/modules/cpp/windows-msvc.qbs index 59032d28a..d5b5baf92 100644 --- a/share/qbs/modules/cpp/windows-msvc.qbs +++ b/share/qbs/modules/cpp/windows-msvc.qbs @@ -38,8 +38,9 @@ MsvcBaseModule { qbs.toolchain && qbs.toolchain.contains('msvc') priority: 50 - Probes.BinaryProbe { + Probes.ClBinaryProbe { id: compilerPathProbe + preferredArchitecture: qbs.architecture condition: !toolchainInstallPath && !_skipAllChecks names: ["cl"] } |