QT5 MOC未生成文件



我正在使用VS2015作为动态库为Maya制作一个C 插件,到目前为止,我没有QT5的用法,但是我现在需要qt5.6.1的q_gadget和q_enum功能因此,我开始将VS设置为包括QT,所有内容都在编译,我没有问题在库中使用QT类,但是当我尝试使用QT的任何属性系统(q_gadget,q_enum等)时,MOC似乎不会生成任何文件,我正在使用QT vs工具2。

我已经阅读了某个地方,我应该将项目转换为QT项目,但是关于如何做的解释是非常不清楚的,我不确定我是否可以为我的当前项目真正做到这一点大量文件。

是否有一种方法可以设置MOC在我的所有.H上运行并自动包含生成的文件?

预先感谢。

可以使用此页面上提供的帮助来解决我的问题:

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:QtQt5.6.15.6msvc2015</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) &quot;%(QtIncludes.identity)&quot; -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>

相关内容

  • 没有找到相关文章

最新更新