【发布时间】:2019-11-21 07:09:36
【问题描述】:
我正在使用 v3.14.4 和“Visual Studio 15 2017 Win64”生成器创建一个 CMake 项目。在构建过程中,还将编译一个 .hlsl 文件并将其存储在与 .exe 相同的目录中。有些东西阻止了我的 hlsl 文件的 VS_SHADER_OBJECT_FILE_NAME 属性的生成器被正确处理。
这是我的 CMake 声明:
set_property(SOURCE shader.hlsl PROPERTY VS_SHADER_OBJECT_FILE_NAME
$<$<CONFIG:Release>:Release/shader.dxbc>
$<$<CONFIG:Debug>:Debug/shader.dxbc>)
VS 中的结果显示表达式几乎通过了。
$<$<CONFIG:Release>:Release/shader.dxbc>;$<$<CONFIG:Debug>:Debug/shader.dxbc>
我已经通过target_compile_definitions() 语句成功使用了生成器,并且还支持set_property()。我的用法是错误的还是用不同的方式写得更好?
【问题讨论】:
-
是否支持生成器表达式取决于属性(名称和类型)。由于documentation for the VS_SHADER_OBJECT_FILE_NAME property 没有描述生成器表达式的用法,因此可能会假设此属性不支持生成器表达式。比较例如documentation for COMPILE_DEFINITIONS property,支持生成器表达式。
-
我明白并将在今后牢记这一点。现在我已经添加了一个自定义命令,它将编译后的着色器放到我想要的位置。
-
@PaulKippes 如果您找到了问题的解决方案,请将解决方案发布为您问题的答案。请不要将答案嵌入问题帖子中。这样,其他有类似问题的人就可以找到解决方案,并了解是什么解决了问题。
标签: visual-studio cmake hlsl