Vulkan 使用CMake构建工程,CMake
是一个代码工程构建的管理工具,可以跨操作系统以及跨编译器地运行。它通过CMakeLists.txt脚本文件来构建工程解决方案。本文我们将学习使用CMake脚本文件来完成第一个Vulkan应用程序的工程构建。我们需要参考下面的步骤来理解构建脚本文件(CMakeLists.txt)的创建过程:
CMake文件创建过程
1)新建一个空的CMakeLists.txt文件并放置在指定文件夹根目录下,即chapter_3>Sample Name>CMakeLists.txt
。为了确保不同的CMake版本之间兼容,你需要设置一个本脚本可以支持的最低版本号。如果当前所用CMake软件的版本比设置的版本更低,那么系统将自动停止工程构建。CMake的最低版本号可以通过脚本命令cmake_minimum_required来设置。下面的代码需要被填写到CMakeList.txt文件当中:
cmake_minimum_required(VERSION 3.7.1)
2)设置必要的变量来定位Vulkan SDK的路径,我们可以使用CMake的关键字set,并设置一个易读懂的名字:
set(Recipe_Name "3_0_DeviceHandshake")
3)在酷客教程(Vulkan)中我们将使用CMake 3.7.1,它已经附带了一个Vulkan的模块。这个模块可以帮助我们定位Vulkan SDK的安装位置,包括头文件目录和构建Vulkan应用程序所必须的库文件。下面的CMake代码会尝试使用CMake的Vulkan模块来查找Vulkan SDK的安装位置,如果没有找到,那么我们需要手动指定Vulkan SDK的路径。下面的代码和注释将进一步体现这一逻辑过程:
4)我们可以通过关键字project来设置工程名称。对于Windows系统来说,窗口系统集成(WSI)需要用到VK_KHR_WIN32_SURFACE_EXTENSION_NAME这个扩展API。因此我们需要在CMake脚本中定义一个预编译宏VK_USE_PLATFORM_WIN32_KHR(使用前缀-D),这里用到了命令add_definitions()。然后我们需要包含Vulkan的头文件所在目录。此外,我们还需要将Bin目录添加进来,以便链接所需的Vulkan运行时/静态链接库:
# 设置一个合适的工程名
project(${Recipe_Name})
# 添加预编译宏
add_definitions(-DVK_USE_PLATFORM_WIN32_KHR)
5)在变量VULKAN_LIB_LINK_LIST中设置所需的库文件,然后使用命令target_link_libraries()将它链接到当前工程中。此外,我们还需要使用CMake指令include_directories()来设置正确的Vulkan头文件目录。我们还需要使用命令link_directories()来设置链接库文件所在的路径。
6)下面的代码可以用来将构建的工程中的头文件和源代码文件分别成组,这样更容易观看和进行代码结构的管理:
7)设置示例程序的头文件路径。我们可以使用命令file()读取示例程序目录中所有的头文件和源代码文件,然后分别保存到变量CPP_Lists和HPP_Lists当中。我们可以使用这两个列表来设置工程中需要编译的文件。我们需要给工程设置一个名字,然后将所有必需的Vulkan依赖库链接到工程中:
8)定义工程编译所需的属性和正确的C/C++标准版本。设置二进制可执行文件的输出路径:
如何构建CMake文件
按照下面的步骤来构建CMake文件:
1)打开一个命令行终端窗口,并且进入示例程序的build目录。如果这个目录不存在,我们直接建立它。我们将通过命令行指令将Visual Studio工程文件生成并保存到这个空的build目录中。当然读者也可以尝试使用CMake GUI的方式。
2)执行下面的命令来构建工程(选择正确的IDE版本)。最后一个参数用来设置当前所用平台的架构,因此如果你的系统是32位的话,你需要在这里写作Win32:
cmake -G "Visual Studio 14 2015 Win64" ..
命令行窗口的界面如图所示。
末尾处的两个句点设置的是CMakeLists.txt文件的位置(即上一级目录),CMake命令必须有这个文件才能正确构建工程。如果这个命令执行成功了,那么你可以看到如图所示的生成后的所有工程文件,工程名就是我们刚才设置过的。
如图所示为酷客教程(Vulkan)中所有示例程序所通用的目录结构。
酷客网相关文章:
评论前必须登录!
注册