Skip to content

Instantly share code, notes, and snippets.

@venkatperi
Created May 23, 2012 14:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save venkatperi/a709593aec23e0aabc65 to your computer and use it in GitHub Desktop.
Save venkatperi/a709593aec23e0aabc65 to your computer and use it in GitHub Desktop.
Automatic moc'ing in Visual Studio
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SourceDir>src/</SourceDir>
<CppDir>$(SourceDir)main</CppDir>
<GenDir>$(SourceDir)gen/cpp</GenDir>
</PropertyGroup>
<PropertyGroup>
<QtDir>c:\qt\4.8.0\</QtDir>
<MocExt>hpp</MocExt>
<Moc>$(QtDir)/bin/moc.exe</Moc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<MocFlags>-DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -I$(GenDir)/ -I$(QtDir)\include\ -I$(QtDir)\include\Qt -I$(QtDir)\include\QtCore -I$(QtDir)\include\QtDeclarative -I$(QtDir)\include\QtGui</MocFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<MocFlags>-DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG=1 -DQT_CORE_LIB -I$(GenDir)/ -I$(QtDir)\include\ -I$(QtDir)\include\Qt -I$(QtDir)\include\QtCore -I$(QtDir)\include\QtDeclarative -I$(QtDir)\include\QtGui</MocFlags>
</PropertyGroup>
<ItemGroup>
<QtIncludes Include="$(CppDir)/**/*.$(MocExt)"/>
</ItemGroup>
<Target Inputs="@(QtIncludes)"
Name="Moc"
BeforeTargets="ClCompile"
Outputs="@(QtIncludes->'$(GenDir)/moc_%(Filename).cpp')">
<Exec Command = "$(Moc) %(QtIncludes.identity) -nw -o $(GenDir)/moc_%(Filename).cpp $(MocFlags)"/>
</Target>
<Target Name="CreateDirectories" BeforeTargets="Moc">
<MakeDir
Directories="$(GenDir)"/>
</Target>
<Target Inputs="@(CopyToOutput)"
Name="CopytoOut"
Outputs="@(CopyToOutput->'%(DestinationFolder)/%(RecursiveDir)%(Filename)%(Extension)')"
AfterTargets="Link">
</Target>
</Project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment