Question

I need to add a new configuration (additional to Debug and Release) to a Visual Studio Project that has been created with the QT Visual-Studio-add-in.

Problem is that the moc files are not automatically added to the project.

Where does the QT Visual-Studio-add-in store the configuration rules for adding a moc_file based on an existing header file?

If I generate a new configuration like Release_Special there should be a new filter Release_Special in the project that contains the files

moc_Test1.cpp moc_Test2.cpp

with correct exclusion rules.

I am using VS2010 and qt 4.8.3.

Thank you and best regards M.S

Was it helpful?

Solution

Took a while, but I managed to figure it out.

  1. You need to create a new configuration without losing any of the Qt add-in custom-added stuff. Open the Configuration Manager and create a configuration, but be sure to select Debug or Release in the "Copy settings from..." dropdown list. Let's say you named the new configuration "Debug-foo", and used the settings from the pre-existing Debug configuration.
  2. Build the project. All necessary files will be moc'd and the outputs will appear inside the GeneratedFiles\Debug-foo directory (it will be created automatically). The build will then try to process the moc files from the Debug configuration which is clearly not what we want, so as soon as the build finishes moc'ing, you can just terminate it.
  3. Add a new filter, named "Debug-foo" under Generated Files in the solution explorer, then Add->Existing item to that, selecting all moc_(...).cpp files from GeneratedFiles\Debug-foo that the build just created.
  4. Last, but not least, select all the files inside the Generated Files\Debug filter, select Properties and set "Excluded from build" to true, otherwise the build will include moc_ files from both Debug and Debug-foo.

Hopefully, this will be fixed in some new version of the add-in. Maybe it is already, who knows (I encountered this problem with add-in 1.1.10).

As to the part of your question about where the rules for moc_ generation are stored; creating the configuration as a copy of an existing one saves you the trouble of adding custom build instructions for invoking moc for every file that requires it. These are stored inside the Properties of invidual header files which need moc'ing under "Custom Build tool" if you want to check them out.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top