Qt5 moc 不生成文件
Qt5 moc not generating file
我正在使用 VS2015 为 maya 制作一个 c++ 插件作为动态库,直到现在,我还没有使用 Qt5,但我现在需要 Qt5 的 Q_Gadget 和 Q_Enum 功能.6.1 所以我开始设置我的 vs 以包含 qt,一切都在编译,我在我的库中使用任何 Qt class 没有问题,但是当我尝试使用任何 qt 属性系统(Q_GADGET、Q_ENUM 等),moc 似乎没有生成任何文件,我正在使用 Qt VS 工具 2.
我在某处读到我应该将我的项目转换为 Qt 项目,但是关于如何做的解释非常不清楚,我不确定我是否真的可以为我当前的项目做这件事谁有大量的文件。
有没有办法在我的所有 .h 上将 moc 设置为 运行 并自动包含生成的文件?
提前致谢。
可以使用此页面上提供的帮助解决我的问题:
automatic mocing in visual studio
我们在 ClCompile 之前使用自定义目标在项目中创建一个 VS 属性 文件 (.props),它将加载所有 .hpp 文件并对它们执行 moc.exe
为我的 5.6.1 项目修改的 .props :
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SourceDir>$(ProjectDir)</SourceDir>
<CppDir>$(SourceDir)/</CppDir>
<GenDir>$(SourceDir)/Generated</GenDir>
</PropertyGroup>
<PropertyGroup>
<QtDir>D:\Qt\Qt5.6.1.6\msvc2015</QtDir>
<MocExt>hpp</MocExt>
<Moc>$(QtDir)/bin/moc.exe</Moc>
</PropertyGroup>
<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>
<ItemDefinitionGroup />
<ItemGroup>
<QtIncludes Include="$(ProjectDir)/**/*.$(MocExt)"/>
</ItemGroup>
</Project>
我正在使用 VS2015 为 maya 制作一个 c++ 插件作为动态库,直到现在,我还没有使用 Qt5,但我现在需要 Qt5 的 Q_Gadget 和 Q_Enum 功能.6.1 所以我开始设置我的 vs 以包含 qt,一切都在编译,我在我的库中使用任何 Qt class 没有问题,但是当我尝试使用任何 qt 属性系统(Q_GADGET、Q_ENUM 等),moc 似乎没有生成任何文件,我正在使用 Qt VS 工具 2.
我在某处读到我应该将我的项目转换为 Qt 项目,但是关于如何做的解释非常不清楚,我不确定我是否真的可以为我当前的项目做这件事谁有大量的文件。
有没有办法在我的所有 .h 上将 moc 设置为 运行 并自动包含生成的文件?
提前致谢。
可以使用此页面上提供的帮助解决我的问题:
automatic mocing in visual studio
我们在 ClCompile 之前使用自定义目标在项目中创建一个 VS 属性 文件 (.props),它将加载所有 .hpp 文件并对它们执行 moc.exe
为我的 5.6.1 项目修改的 .props :
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SourceDir>$(ProjectDir)</SourceDir>
<CppDir>$(SourceDir)/</CppDir>
<GenDir>$(SourceDir)/Generated</GenDir>
</PropertyGroup>
<PropertyGroup>
<QtDir>D:\Qt\Qt5.6.1.6\msvc2015</QtDir>
<MocExt>hpp</MocExt>
<Moc>$(QtDir)/bin/moc.exe</Moc>
</PropertyGroup>
<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>
<ItemDefinitionGroup />
<ItemGroup>
<QtIncludes Include="$(ProjectDir)/**/*.$(MocExt)"/>
</ItemGroup>
</Project>