首页 > 解决方案 > Glslang VS 项目设置

问题描述

我正在关注这个快速教程,但我不确定如何为我预先存在的 VS 2017 项目执行项目设置部分,该项目使用包含 glslang 和 SPIRV 文件夹的LunarG Vulkan SDK 。我尝试使用此处找到的表格来转换教程中的 cmake 命令;我能够包含 glslang 目录,但我不知道应该添加什么到属性->链接器->输入->用于链接 glslang 和 SPIRV 的附加依赖项。我是否必须先以某种方式编译这些然后链接到它们?在这种情况下我该怎么做?

标签: visual-studiocmakevulkan

解决方案


我是否必须先以某种方式编译这些然后链接到它们?在这种情况下我该怎么做?

是的。如果您想在运行时而不是在构建时使用 glslang 工具,您需要首先构建它们。VulkanSDK 包含 glslang 源代码,但不包含二进制文件。由于 glslang 的接口是 C++,而不是像 Vulkan 这样的 C,因此生成适用于所有人的二进制文件基本上是不可能的。

您链接到的教程包括:

add_subdirectory(${LIB_DIRECTORY}/glslang)

这基本上意味着“在我自己的项目中包含这个其他基于 CMake 的项目”,这反过来意味着它将具有与您自己的基于 CMake 的项目相同的构建设置。为了绕过 CMake,您需要从头开始为 glslang 构建一个 Visual Studio 项目。

我对您的建议是停止尝试将本教程融入您预先存在的 Visual Studio 项目中,而只需使用 CMake 生成您的 VS 项目,以便您可以直接按照教程进行操作。您在预先存在的 VS 项目中的任何设置都极不可能很快地复制到基于 CMake 的 VS 项目中。

或者,您可以学习足够的 CMake 来为 glslang 创建一个项目并构建它,此时您将能够使用它创建的二进制文件作为您的链接器输入,您需要确保项目设置在glslang 生成的项目与您自己的项目非常接近,特别是运行时库和 32/64 位,并确保您不会在依赖项中混合和匹配发布和调试版本。

这是构建 glslang 的简单方法,假设您已安装 CMake 并正确安装了 VulkanSDK:

mkdir %VULKAN_SDK%\..\glslang
cd %VULKAN_SDK%\glslang
mkdir build
cd build
cmake .. -G "Visual Studio 15 Win64" -DCMAKE_INSTALL_PREFIX=%VULKAN_SDK%\..\glslang
cmake --build . --config Release 
cmake --build . --config Debug
cmake --build . --config Release --target INSTALL 
cmake --build . --config Debug --target INSTALL 

推荐阅读