2017-03-09 23 views
0

私はVS2015を使ってダイナミックライブラリとしてmaya用のC++プラグインを作っていますが、今まではQt5の使用方法はありませんでしたが、Qt5.6.1のQ_GadgetとQ_Enum機能が必要ですQtを含むようにセットアップするにはすべてがコンパイルされていて、私のライブラリでQtクラスを使用するのに問題はありませんが、qtのプロパティシステム(Q_GADGET、Q_ENUMなど)を使用しようとすると、私はQt VSツールを使っています。Qt5 mocがファイルを生成していない

私は自分のプロジェクトをQtプロジェクトに変換するはずですが、それを行う方法についての説明は非常に不明です。巨大なファイルを持っている私の現在のプロジェクトで実際にそれを行うことができるかどうかはわかりません。

私のすべての.hを実行し、生成されたファイルを自動的にインクルードするようにmocを設定する方法はありますか?

ありがとうございます。

答えて

0

このページで提供されるヘルプを使用して、私の問題を修正でした:

automatic mocing in visual studio

我々はすべての.HPPファイルをロードしますClCompile前にカスタムターゲットを持つプロジェクト内のVSのプロパティファイル(.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> 
:私5.6.1プロジェクトのために変更

.propsそれらにmoc.exeを実行します

関連する問題