【问题标题】:Qt5 moc not generating fileQt5 moc没有生成文件
【发布时间】:2017-03-09 23:59:57
【问题描述】:

我正在使用 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-2015 qt5 moc


    【解决方案1】:

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

    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\5.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) &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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多