Vulkan

Setup Vulkan on VSCode and macOS

JoonSwift 2022. 6. 27. 15:27

Vulkan을 mac에서 사용해보고 싶어서 그리고 Xcode가 아닌 VSCode에서 사용하는 법을 포스팅해보려고 합니다. Vulkan tutorial에는 Xcode밖에 안나와서... 저는 VSCode로 하고싶어서 한번 시도해봤습니다 ㅎㅎㅎ

 

우선 GLFW, GLM 그리고 VulkanSDK를 다운 받은 상태라고 생각하여 진행하겠습니다.

GLFW, GLM 설치법 (https://vulkan-tutorial.com/Development_environment)

VulkanSDK 설치 (https://vulkan.lunarg.com/)

 

Create workspace

우선 저는 VSCode에서 Vulkan_Blog라는 폴더를 생성했습니다. 그리고 main.cpp 파일도 하나 만들어주겠습니다.

 

Set tasks.json args

VSCode의 Terminal 메뉴에서 'Configure Default Build Task...' 를 선택해주면

이렇게 컴파일러들이 나오는데 저는 C/C++: clang++ 활성 파일 빌드를 선택해주겠습니다. 그럼 workspace 폴더의 .vscode가 생기고, tasks.json 파일이 들어있는것을 확인할 수 있습니다.

이 tasks.json 파일의 tasks 의 args에 다음을 추가해줍니다. 제일 처음은 c++17을 사용할 수 있게 설정합니다.

{
	"version": ...
    "tasks": [
    	{
        	"type": ...
            //...
            "args": [
            	// ... 
                "-std=c++17", // add!
                // ...

다음은 homebrew로 다운받았던 GLFW, GLM의 경로를 설정해줍니다. 각각 include 와 lib 폴더의 경로를 args에 추가해주겠습니다.

homebrew에서 다운받은 것들의 경로는 arm64 구조에서 받았다면 /opt/homebrew에 아니라면 /usr/local에 있습니다!

"-I/opt/homebrew/include",
"-L/opt/homebrew/lib",

여기서 다시 강조하지만 위의 경로는 GLFW, GLM을 설치한 경로를 써주어야합니다!

 

다음은 VulkanSDK의 경로를 설정해줍니다. VulkanSDK역시 include, lib의 경로를 args에 추가합니다.

"-I/Users/kimhojoon/VulkanSDK/1.3.216.0/macOS/include",
"-L/Users/kimhojoon/VulkanSDK/1.3.216.0/macOS/lib",

다음은 라이브러리들을 링크해주는 작업이 필요합니다.

.dylib파일을 링크해줄 것인데, 이는 위의 GLFW, GLM을 다운받는 방법을 설명하는 웹사이트에서 Xcode설정을 할 때 하는

이 부분과 유사합니다. 방법은 간단합니다. 저 libglfw.3.x.dylib 파일, libvulkan.1.dylib, libvulkan.1.x.dylib 을 가져와주면 됩니다.

역시 args에 추가해줍니다.

"/opt/homebrew/lib/libglfw.3.3.dylib",
"/Users/kimhojoon/VulkanSDK/1.3.216.0/macOS/lib/libvulkan.1.dylib",
"/Users/kimhojoon/VulkanSDK/1.3.216.0/macOS/lib/libvulkan.1.3.216.dylib",

자! 이제 main.cpp에 (https://vulkan-tutorial.com/Development_environment) 여기 사이트에 나와있는 예제 코드를 복사 붙여넣기 한다음에 build and run을 하면!

Vulkan window 라는 창이 뜨게됩니다!

 

tasks.json 파일

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: clang++ 활성 파일 빌드",
			"command": "/usr/bin/clang++",
			"args": [
				"-std=c++17",
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-I/opt/homebrew/include",
				"-L/opt/homebrew/lib",
				"-I/Users/kimhojoon/VulkanSDK/1.3.216.0/macOS/include",
				"-L/Users/kimhojoon/VulkanSDK/1.3.216.0/macOS/lib",
				"/opt/homebrew/lib/libglfw.3.3.dylib",
				"/Users/kimhojoon/VulkanSDK/1.3.216.0/macOS/lib/libvulkan.1.dylib",
				"/Users/kimhojoon/VulkanSDK/1.3.216.0/macOS/lib/libvulkan.1.3.216.dylib",
				"-o",
				"${fileDirname}/${fileBasenameNoExtension}"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "컴파일러: /usr/bin/clang++"
		}
	]
}