LoginSignup
0
0

CLion+Vulkan入門覚書【環境構築】

Last updated at Posted at 2024-05-09

CLionでVulkan Programmingをしている人が見当たらなかったので執筆。
学生だと,Visual Studioが買えない人も多いと思うので,是非参考にしてほしい。噂によるとMacではVisual Studioのサポートが終了するらしいので,Mac勢もぜひこのタイミングで切り替えてもらえればと。

動作環境

執筆日時: 2024/02/02

C:\Windows\System32>neofetch
llllllllllllllll   llllllllllllllll            
llllllllllllllll   llllllllllllllll            --------------
llllllllllllllll   llllllllllllllll            OS: Windows 11
llllllllllllllll   llllllllllllllll            Build: 23H2 (22631)
llllllllllllllll   llllllllllllllll            Uptime: 8 days, 2 hours, 31 minutes
llllllllllllllll   llllllllllllllll            Resolution: 3840x2160 @60Hz
llllllllllllllll   llllllllllllllll            Terminal: C:\Windows\system32\cmd.exe - neofetch
llllllllllllllll   llllllllllllllll            CPU: 13th Gen Intel(R) Core(TM) i5-13500
llllllllllllllll   llllllllllllllll            GPU: NVIDIA GeForce RTX 4060 Ti
                                               Memory: 21549 MB / 32542 MB (66% in use)
llllllllllllllll   llllllllllllllll            Disk: C:\ 953.04 GB (770.59 GB free)
llllllllllllllll   llllllllllllllll
llllllllllllllll   llllllllllllllll            Mem%:  -=[ //////////////////// ]=-
llllllllllllllll   llllllllllllllll
llllllllllllllll   llllllllllllllll            Disk%: -=[ //////////////////// ]=-
llllllllllllllll   llllllllllllllll
llllllllllllllll   llllllllllllllll
llllllllllllllll   llllllllllllllll
llllllllllllllll   llllllllllllllll

特記環境

筆者の環境は次のようになっている。困ったらそろえてほしい。

ディレクトリ 用途
D:/usr/local 非特権バイナリのインストール先
D:/usr/bin バイナリのシンボリックリンク先で,パスが通っている
D:/usr/lib ライブラリのインストール先
D:/usr/src ソースコードの置き場,ビルドしてlibやらlocalやらにリンクを張りがち
D:/bin, C:/bin D:/usr/binへのリンク
D:/lib, C:/lib D:/usr/libへのリンク

Linuxともちょっと変えているのでご注意を.

Vulkanのダウンロード

LunarG vulkanをダウンロードすればよい.

このリンクの一番下のWindowsアイコンを押し,その中にあるSDKとラインタイムを適当に入れる.自分はD:\lib\Vulkan以下にSDKを入れた.

CLion起動後にやったこと

ビルドツールの設定

image.png
Visual Studio Build Toolsは,C++によるデスクトップ開発があればよい.

vcpkg

vcpkgはC系向けのpipみたいなもんです.
CLionのエディタ画面の左側から,Vcpkgのカラムを開いて,+ボタンからリポジトリを追加する.
1つのリポジトリにvcpkgがローカルバージョンを用意し,その中に色々入れていくので基本はライブラリ構成が変わるたびに作るのがいいだろう.ディスクの大きさと要相談.

名前とディレクトリ名を適切に設定し,チェックを全部いれたら作成.マニフェストモードに変更.

glfw3, glm, spdlogを取り合えず入れる.

CmakeLists.txt


cmake_minimum_required(VERSION 3.27)

project(hdit_demo_game CXX)

set(CMAKE_CXX_STANDARD 20)
if(DEBUG)
    add_compile_definitions(DEBUG)
endif()

find_package(spdlog CONFIG REQUIRED)

add_executable(${PROJECT_NAME} main.cpp)

target_link_libraries(${PROJECT_NAME} PRIVATE
        spdlog::spdlog_header_only
)

find_package(glfw3 CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE
        glfw
)

find_package(glm CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE
        glm::glm
)

find_package(Vulkan REQUIRED)
target_include_directories(${PROJECT_NAME} PRIVATE ${Vulkan_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PRIVATE ${Vulkan_LIBRARIES})


Cmakeのカラムでぐるぐる矢印ボタンを押すと,CMakeLists.txtをもとに環境を整えてくれる.CTRL+F5で実行可能.

overview

Cmakeでは主にfind_package, target_include_directories, target_link_librariesの三つを組み合わせて記述する.初心者なのでマルチプラットフォーム性は排除する.
find_packageはライブラリのcmakeを探索して,変数に色々代入してくれる.
target_link_librariesはプロジェクトに対して静的ライブららいや動的ライブラリをリンクしてくれる.-lspdlogオプションのようなものといえばわかりやすいか.target_include_librariesは,そのライブラリのヘッダーなどをインクルードディレクトリに追加してくれる.

test


#include "spdlog/spdlog.h"
#include "vulkan/vulkan.hpp"

int main() {
    spdlog::trace("this is a trace");
    spdlog::info("this is a information");
    spdlog::error("this is a error");
    spdlog::critical("this is a critical error");
    VkApplicationInfo application_info{};
    application_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
    application_info.apiVersion = VK_API_VERSION_1_0;
    application_info.pApplicationName = "VulkanAppAdcal2018";

    VkInstanceCreateInfo instance_create_info{};
    instance_create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
    instance_create_info.pApplicationInfo = &application_info;
    auto err = vkCreateInstance(&instance_create_info, nullptr, &_instance);
    if (VK_SUCCESS != err) {
        spdlog::error("error: {}", err);
        abort();
    }
    return 0;
}

これで特にエラーが起こらなければ構築のノリはできているんじゃないだろうか.

環境で困ったら

ライブラリの依存関係で困ったとき

cmake-build-debugを削除すればよい.cmakeのぐるぐる矢印ボタンを押したら再生成される.

ライブラリが破損したっぽいとき

vcpkgのリポジトリを再度やり直せばなんだかんだよい.

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0