Solved Cannot Run Compiler 'cl'
-
Ok, so something I've just discovered.
Under the Options -> Qbs ->Profiles, when I select the 5.9.1 MSVC2015 32-bit kit and I examine the
cpp
values, thecompilerName
is empty as is thetoolchainInstallPath
. Incidentally, on another machine which works these values are set tocl.exe
and theVC/Bin
path of the Visual Studio directory.The question is, how would one change these values?
-
Meh, it makes no difference - managed to change the values to reflect that of my working system but it still doesn't work. I also installed
cmake
to reduce the number of differences but again, doesn't fix the issue. -
Just realised something, you have a QBS project failing ?
If so, does a classic qmake project work ?
-
It is a Qt Widgets application that is failing - I'm not certain what a Qbs project is. I was purely looking for differences between a known working Qt setup and my current setup.
-
It's a project using the QBS project manager rather than qmake.
-
Hi webzoid,
I don't have an exact solution for you, but maybe some helpful information:
I just encountered a very similar problem - we have a command line build and somewhat-complex make system here which calls qmake, etc. via a command line. This make system was built around Qt 5.5.1, and uses the "win32-msvc2015" make spec (e.g. qmake -spec win32-msvc2015). I attempted to use the latest Qt 5.9.1, and our make system failed because the Qt "mkspecs" folder in Qt 5.9.1 now contains a single "win32-msvc" folder, instead of separate "win32-msvc2005", "win32-msvc2008", "win32-msvc2010", "win32-msvc2012", "win32-msvc2013", and "win32-msvc2015" folders as it did in Qt 5.5.1.
I attempted to do some copying/pasting/renaming of folders in order to get our existing make system to build with Qt 5.9.1 (without editing our make system, for reasons I won't get into), but was not successful - the build got farther, past the "Could not find qmake configuration file win32-msvc2015" error I had been seeing, but hit an error similar to what you are seeing: "Project ERROR: Cannot run compiler 'cl'. Maybe you forgot to setup the environment?".
In the end, it was not important for me to use the absolute latest version (Qt 5.9.1), and instead I worked around the problem by just using Qt 5.6.2 instead, which has a folder structure similar to Qt 5.5.1 (what our make system was built around).
My guess is that there was some restructuring done around the MSVC make specs in recent Qt versions, and maybe in other MSVC-build-related areas, which is somehow related to your issue.
(Just some information...)
-Brian
-
@Brian-Dolan Thanks for your reply and thanks for the extra information. It got to the point where I uninstalled Qt AND Visual Studio then re-installed both just to see what would happen. When I re-installed Qt Creator, the same problems arose.
It almost had me beat but after a little bit more digging, I've finally managed to sort it.
When I executed the
vcvarsall.bat
file from within the Visual Studio / VC directory, I noticed that a couple of issues were being reported in the command line - notably thatMySQL command not found
which I thought rather odd - what would MySQL have to do with a Visual Studio install?Anyhoo, having then removed anything and everything MySQL-related from my system, running the
vcvarsall.bat
again yielded no reported issues. I then ran Qt Creator again using a simple example application and now everything works perfectly. All I can think of is that when thevcvarsall.bat
returns an exit code, it was not the exit code expected by Qt Creator due to the MySQL issues. Either that or there was a lingering bath path around used by MySQL which no longer existed and was throwing the toolchain.Either way, I'm back in business! Thanks for all the comments and help with this.
-
Well that was a tricky one...
Thanks for sharing your findings !
Since you have it working now, please mark the thread as solved using the "Topic Tools" button so that other forum users may know a solution has been found :)
-
For me, I had to install Visual C++ 2015 Build Tools for resolving the error (http://landinghub.visualstudio.com/visual-cpp-build-tools).
Batch file C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat didn't found C:\Program Files (x86)\Microsoft Visual C++ Build Tools folder.Best regards.
-
Thanks for your post! MySQL was also the culprit on my Qt build. I also installed all MySQL software and then I could build the Qt application without problems!
-
In my case it was more complex. The antivirus client was tripping up over all the reg query calls in some of the bat files and delaying things sufficiently such that Qt got an incomplete environment. Seems Qt times out when calling vcvarsall. The delays were substantial. Minutes. Observed Qt creating temp bat files to call vcvarsall.bat over and over and over again. The solution I arrived at is to cache the resulting environment in another .bat file that simply sets the environment variables with the determined values. This is updated 1x day and the result is that I can open in Qt and have a working environment. It simply sets the saved environment and skips all the reg query calls. Note that vcvars64 or vcvars32 both make a reg query call for VS140COMNTOOLS. This seems enough of a delay to result in an incomplete path and hence cl.exe missing. I setup the caching within the vcvars64/32 files. If the cache file exists for the day then it's simply loaded, otherwise the reg query process is done to populate the values in case the environment changes and then those variables are written to the cache cmd file.
The other bit of fun is that the order of reg query calls isn't optimized for current systems, meaning it tries several failing paths first, also adding to delay. And most every line in called bat files is prepended with @ (echo off) making debugging harder. That and the subroutines called have > null 2>&1 which also turns off output. So if you need to debug you need to deal with all that. Noticed 2017 bats have two branches of code to allow for debugging.