如何将Vulkan添加到跨平台CMake项目?例子? [英] How can I add Vulkan to a cross platform CMake project? Example?

查看:211
本文介绍了如何将Vulkan添加到跨平台CMake项目?例子?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的CMake项目中使用Vulkan,我应该如何进行?

I'd like to use Vulkan in my CMake project how should I proceed?

看看Vulkan样本并不能真正揭示如何做事.而且许多教程都坚持要求您侵入自己的环境以使事情正常进行.

Looking at the Vulkan samples doesn't really reveal how to do things. And many tutorials insist on you hacking up your own environment to get things working.

理想情况下,我只是希望它可以轻松地工作,而不必担心包含目录/链接.

Ideally I just want this to work easily and not have to worry about include directories/linking.

推荐答案

这是CMake和开源之美.

This is the beauty of CMake and open source.

我在示例中使用的是Windows/Visual Studio 2019,但这并不重要.

I'm using Windows / Visual Studio 2019 in my example but it really doesn't matter.

首先下载Vulkan SDK: https://www.lunarg.com/vulkan-sdk/

First download the Vulkan SDK: https://www.lunarg.com/vulkan-sdk/

为了安全起见,请重新启动计算机(环境变量).VulkanSDK将环境变量放到您的系统上.(我知道您从技术上来说不必重新启动计算机,但我不想提供有关环境变量的速成课程)

Restart your computer just to be safe (environment variables). The VulkanSDK puts environment variables onto your system. (I realize you don't technically have to restart your computer, but I don't wanna give a crash course on environment variables)

现在我们可以进入CMake了.

Now we can move onto the CMake.

cmake_minimum_required(VERSION 3.19)

project(EXAMPLE
    LANGUAGES CXX
)

find_package(Vulkan REQUIRED)

add_executable(foobar)

target_sources(foobar PRIVATE main.cpp)

target_link_libraries(foobar PRIVATE Vulkan::Vulkan)

这是我的main.cpp的样子

This is what my main.cpp looks like

#include "vulkan/vulkan.h"
#include <iostream>

int main()
{
    std::cout << "Hello World\n";
}

这是我的CMake构建命令的样子:

This is what my CMake build commands looked like:

PS C:\git\vulkan_example> cmake -S . -B build
-- Building for: Visual Studio 16 2019
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.21327.
-- The CXX compiler identification is MSVC 19.29.29917.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Preview/VC/Tools/MSVC/14.29.29917/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Vulkan: C:/VulkanSDK/1.2.170.0/Lib/vulkan-1.lib  
-- Configuring done
-- Generating done
-- Build files have been written to: C:/git/vulkan_example/build
PS C:\git\vulkan_example> cmake --build build --verbose
Microsoft (R) Build Engine version 16.10.0-preview-21118-01+f0eebf287 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 3/11/2021 10:20:28 AM.
Project "C:\git\vulkan_example\build\ALL_BUILD.vcxproj" on node 1 (default targets).
Project "C:\git\vulkan_example\build\ALL_BUILD.vcxproj" (1) is building "C:\git\vulkan_example\build\ZERO_CHECK.vcxproj" (2) on node 1 (default targets).
PrepareForBuild:
  Creating directory "x64\Debug\ZERO_CHECK\".
  Creating directory "x64\Debug\ZERO_CHECK\ZERO_CHECK.tlog\".
InitializeBuildStatus:
  Creating "x64\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  Checking Build System
FinalizeBuildStatus:
  Deleting file "x64\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild".
  Touching "x64\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate".
Done Building Project "C:\git\vulkan_example\build\ZERO_CHECK.vcxproj" (default targets).

Project "C:\git\vulkan_example\build\ALL_BUILD.vcxproj" (1) is building "C:\git\vulkan_example\build\foobar.vcxproj" (3) on node 1 (default targets).
PrepareForBuild:
  Creating directory "foobar.dir\Debug\".
  Creating directory "C:\git\vulkan_example\build\Debug\".
  Creating directory "foobar.dir\Debug\foobar.tlog\".
InitializeBuildStatus:
  Creating "foobar.dir\Debug\foobar.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  Building Custom Rule C:/git/vulkan_example/CMakeLists.txt
ClCompile:
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.29.29917\bin\HostX64\x64\CL.exe /c /IC:\VulkanSDK\1.2.170.0\Include /Zi /nologo /W1 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WIND
  OWS /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"foobar.dir\Debug\\" /Fd"foobar.dir\Debug\vc142.pdb" /Gd /TP /errorReport:queue C:\git\vul 
  kan_example\main.cpp
  main.cpp
Link:
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.29.29917\bin\HostX64\x64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\git\vulkan_example\build\Debug\foobar.exe" /INCREMENTAL /NOLOGO "C:\Vulka
  nSDK\1.2.170.0\Lib\vulkan-1.lib" kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /m 
  anifest:embed /DEBUG /PDB:"C:/git/vulkan_example/build/Debug/foobar.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/git/vulkan_example/build/Debug/foobar.lib" /MACHINE:X64  /machine:x64 foobar 
  .dir\Debug\main.obj
  foobar.vcxproj -> C:\git\vulkan_example\build\Debug\foobar.exe
FinalizeBuildStatus:
  Deleting file "foobar.dir\Debug\foobar.tlog\unsuccessfulbuild".
  Touching "foobar.dir\Debug\foobar.tlog\foobar.lastbuildstate".
Done Building Project "C:\git\vulkan_example\build\foobar.vcxproj" (default targets).

PrepareForBuild:
  Creating directory "x64\Debug\ALL_BUILD\".
  Creating directory "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\".
InitializeBuildStatus:
  Creating "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  Building Custom Rule C:/git/vulkan_example/CMakeLists.txt
FinalizeBuildStatus:
  Deleting file "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\unsuccessfulbuild".
  Touching "x64\Debug\ALL_BUILD\ALL_BUILD.tlog\ALL_BUILD.lastbuildstate".
Done Building Project "C:\git\vulkan_example\build\ALL_BUILD.vcxproj" (default targets).


Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:01.19
PS C:\git\vulkan_example>

这篇关于如何将Vulkan添加到跨平台CMake项目?例子?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆