在自定义构建工具定义中指定其他依赖项

时间:2019-07-05 12:46:57

标签: visual-studio glsl

我有一个基于https://github.com/AndrewJDR/glslvalidatevs的设置来自动编译Visual Studio 2019项目中存在的任何GLSL着色器文件。

这是我的GLSLValidateVS.props版本的内容,因为它与上面的存储库中的版本不同:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <PropertyPageSchema Include="$(MSBuildThisFileDirectory)GLSLValidateTargets.props" />
    <AvailableItemName Include="GLSLValidate">
      <Targets>GLSLValidate</Targets>
    </AvailableItemName>
  </ItemGroup>
  <PropertyGroup Label="UserMacros">
    <GLSLValidatorExe>%VULKAN_SDK%\Bin\glslangValidator.exe</GLSLValidatorExe>
  </PropertyGroup>
  <ItemGroup>
    <BuildMacro Include="GLSLValidatorExe">
      <Value>$(GLSLValidatorExe)</Value>
      <EnvironmentVariable>true</EnvironmentVariable>
    </BuildMacro>
  </ItemGroup>
  <Target Name="GLSLValidate" Condition="'@(GLSLValidate)' != ''" AfterTargets="Compile" BeforeTargets="Link">
    <Message Text="Building GLSL Shaders..." Importance="High" />
    <ItemGroup>
      <GLSLValidate>
        <Message>%(Filename)%(Extension)</Message>
        <Command>if not exist "$(SolutionDir)assets\shaders\" mkdir $(SolutionDir)assets\shaders\
$(GLSLValidatorExe) -V "%(GLSLValidate.FullPath)" -o $(SolutionDir)assets\shaders\%(Filename).spv</Command>
        <Outputs>$(SolutionDir)assets\shaders\%(Filename).spv</Outputs>
      </GLSLValidate>
    </ItemGroup>
    <CustomBuild
      Sources="@(GLSLValidate)"
      MinimalRebuildFromTracking="true"
      TrackerLogDirectory="$(TLogLocation)"
      ErrorListRegex="(?'CATEGORY'ERROR|WARNING): (?'FILENAME'.+):(?'LINE'\d+): (?'TEXT'.*)">

     </CustomBuild>
  </Target>
</Project>

由于我的GLSL着色器包括一些*.h文件,因此我现在正在尝试指定其他依赖项,并且我希望在修改任何头文件的情况下重新构建GLSL着色器。

我尝试添加

<AdditionalDependencies>$(SolutionDir)src\shaders\my_header_file.h</AdditionalDependencies>

进入该块,但是没有用。我也尝试添加

<AdditionalInputs>$(SolutionDir)src\shaders\my_header_file.h</AdditionalInputs>

但是那也不起作用。

请注意,在这两种情况下,VS都不会抱怨未知元素,因此似乎可以识别它们,但是它们没有作用。

0 个答案:

没有答案