Qt .pro file: how to check if I'm compiling with MSVC 2013 toolset?

雨燕双飞 提交于 2019-12-12 10:37:01

问题


I've tried this condition, but it doesn't work. How to check for MSVC 2013?

win32-msvc2013*{
    QMAKE_CXXFLAGS += /FS
}

I'm using Qt 5.3 Beta which has msvc-2013 mkspec.


回答1:


Sorry for necroposting, but there seems no googleable solution. Seems I found one. There is vcvars.bat file, which is used for setting correct environment variables for VC. QtCreator, for example, use it while setting Tools -> Options -> Build & Run -> Compilers. Also it is used for MSVC Command Promt. Let`s check "VisualStudioVersion" env var in qmake (14.0 for MSVS 2015 in my case):

win32-msvc* {
    MSVC_VER = $$(VisualStudioVersion)
    equals(MSVC_VER, 14.0){
        message("msvc 2015")
    }
}



回答2:


Try this way:

win32-msvc* {
    system(cl|grep "Compiler Version 18.") {
        message( "msvc 2013 detected" )
        QMAKE_CXXFLAGS += /FS
    }
}

http://qt-project.org/doc/qt-4.8/qmake-function-reference.html

Can't test it I don't have Windows machine now.




回答3:


I use following:

contains(QMAKE_COMPILER_DEFINES, _MSC_VER=1800) { 
# MSVS2013
}



回答4:


found simple and elegant solution:

win32-msvc*: {
    COMPIL = $$find(CONFIG, "^win32-msvc*")
    COMPIL = $$replace(COMPIL,win32-,) # 'win32-msvc2017' -> 'msvc2017'
}

Edit: this only works with Qt 5.9.0 and later. Only then configs win32-msvc2012/win32-msvc2013/etc. are merged into single win32-msvc




回答5:


Check supported platforms and table of Reference Configurations. There is no msvc2013! Newest visual studio supported is 2012.

So when detecting visual studio do not enforce 2013 sufix. Just use approach shown here



来源:https://stackoverflow.com/questions/23381727/qt-pro-file-how-to-check-if-im-compiling-with-msvc-2013-toolset

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!