QT is a cool GUI framework and the Visual Studio add-in is pretty neat… it allows you to code and deploy C++/QT apps without having to deal with QT’s include directories, linker dependencies, environment variables and all that jazz. You simply create a new QT project (an application or library) in Visual Studio just as you would for any regular VC++ project, select the modules you want to use, and thunderbirds are go!
But annoyingly enough, the add-in doesn’t allow you to take an existing vanilla Visual Studio project and turn it into a QT enabled project. Sure you could forget about it and manually do everything the add-in does for you. Or you could create a fresh QT project and migrate your source and settings to it, but that’s a royal pain if your project is complex. Since I’ve seen a few people asking about this missing feature and it’s bothered me in the past, I thought I’d post the solution I figured out (only tested on VS2008)… it’s actually very simple and it doesn’t even involve any assembly level hacking 😉
- Open your .vcproj file in your favourite text editor – if you’ve never seen one of these in the wild, it may surprise you to know that it’s plain XML… that’s what allows SVN to merge project changes without disaster.
- Change the Keyword part near the top to Keyword=”Qt4VSv1.0″ and adjust for your desired version.
- Add this to the globals section:
<Global Name="lupdateOnBuild" Value="0"/> <Global Name="MocDir" Value=".GeneratedFiles$(ConfigurationName)"/> <Global Name="MocOptions" Value=""/> <Global Name="QtVersion Win32" Value="$(DefaultQtVersion)"/> <Global Name="RccDir" Value=".GeneratedFiles"/> <Global Name="UicDir" Value=".GeneratedFiles"/>
- For each build configuration (i.e. Debug and Release):
- Add AdditionalIncludeDirectories=”$(QTDIR)include” to the VCCLCompilerTool entry
- Add AdditionalLibraryDirectories=”$(QTDIR)lib” to the VCLinkerTool entry
- It should build now… open the QT settings for the project, select the modules you want (probably Core and GUI at a minimum) and you’re done.
Next step??? Someone write a script to automate this!