[Development] Fwd: About CMAKE_MKSPEC, the spec file recorded in Qt5CoreConfigExtrasMkspecDir.cmake and "using any compiler"

René J.V. Bertin rjvbertin at gmail.com
Mon Feb 25 15:16:17 CET 2019

On Monday February 25 2019 12:24:31 Kevin Funk wrote:

> That makes sense in theory. QMake will switch to a different mkspec when you 
> pass `-spec ...` when building an external project. It's impossible to 
> instruct CMake to do the same right now, as the mkspec is hardcoded in the 
> CMake config files of the Qt install.
> Maybe there should be a way to overwrite the mkspec used via a -DQT_MKSPEC 
> parameter, with the potential drawback of being able to create a broken 

I'm testing a patch which leaves in the CMAKE_MKSPEC variable (with the current hardcoded setting as a default).

So far I haven't noticed any differences but I haven't yet pushed things to the limit.

CMake gives the user plenty of opportunity to create a broken configuration; as long as any new option complies with the "garbage in/out" principle there shouldn't be a problem :)

> be a potential solution, but again, would require quite a lot of additional 
> CMake code I'm afraid. Not something I'd envision to maintain for all the 
> different mkspecs we have.

You could consider an approach where you do a reasonable amount of inferring for the foreseeable configurations, and raise an error requiring the user to set the variable explicitly when there's a too big mismatch with the Qt build configuration.
No idea if that's better than just using the current hardcoded default with a possibility for manual override.

> Yes, that's why this hasn't popped up on the bug tracker so far I think. It's 
> again an artificial problem:

Maybe, but one that can become a real problem anytime. Probably.

So maybe my example was too good in a sense (it's been too long since I did any development on MSWin), but what when one of the mkspec headers introduces something that somehow depends on the C++ runtime in use (on Linux; here too I'm not certain if it is officially "not done" but libc++ appears to be mixable with libstdc++ when built against that runtime)?


More information about the Development mailing list