我有一个基于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都不会抱怨未知元素,因此似乎可以识别它们,但是它们没有作用。