Integrating SDL3_net and WebGPU-Native on Windows & Ubuntu Интеграция SDL3_net и WebGPU-Native под Windows и Ubuntu
A step-by-step guide to setting up and configuring SDL3_net and WebGPU-Native in your CMake projects on Windows and Ubuntu. Пошаговое руководство по настройке и конфигурированию SDL3_net и WebGPU-Native в проекты CMake под Windows и Ubuntu.
- Installing Prebuilt wgpu-native Library for Windows Установка предкомпилированной библиотеки wgpu-native для Windows
- Installing Prebuilt wgpu-native Library for Ubuntu Установка предкомпилированной библиотеки wgpu-native для Ubuntu
- Building SDL3_net Static Library for Windows (MinGW & CMake) Сборка статической библиотеки SDL3_net для Windows (MinGW и CMake)
- Building SDL3_net Static Library for Ubuntu (GCC, CMake & Ninja) Сборка статической библиотеки SDL3_net для Ubuntu (GCC, CMake и Ninja)
Step 1: Create Project Directory Шаг 1: Создание директории проекта
Create a workspace folder and a new directory for your WebGPU-Native, SDL3, and SDL3_net starter project: Создайте рабочую папку для проектов и новую директорию для вашего стартового проекта WebGPU-Native, SDL3 и SDL3_net:
Windows (Command Prompt / PowerShell)
mkdir C:\projects\sdl3-net-webgpu-starter
cd C:\projects\sdl3-net-webgpu-starter
Ubuntu (Terminal)
mkdir -p ~/projects/sdl3-net-webgpu-starter
cd ~/projects/sdl3-net-webgpu-starter
Step 2: Create Source Files (main.cpp & CMakeLists.txt) Шаг 2: Создание исходных файлов (main.cpp и CMakeLists.txt)
Create a src directory and add main.cpp along with CMakeLists.txt in the project root:
Создайте директорию src и добавьте main.cpp вместе с CMakeLists.txt в корень проекта:
Windows (Terminal / Notepad)
mkdir src
notepad src\main.cpp
notepad CMakeLists.txt
Ubuntu (Terminal / Nano)
mkdir -p src
nano src/main.cpp
nano CMakeLists.txt
1. File Contents for src/main.cpp 1. Содержимое файла src/main.cpp
#include <SDL3/SDL.h>
#include <SDL3_net/SDL_net.h>
#include <iostream>
#include <webgpu/webgpu.h>
int main(int argc, char *argv[])
{
if (!SDL_Init(SDL_INIT_VIDEO))
{
std::cerr << "Failed to initialize SDL: " << SDL_GetError() << std::endl;
return -1;
}
SDL_Window *window = SDL_CreateWindow("SDL3_net + WebGPU Native Test", 800, 600, SDL_WINDOW_RESIZABLE);
if (!window)
{
std::cerr << "Failed to create window: " << SDL_GetError() << std::endl;
SDL_Quit();
return -1;
}
WGPUInstanceDescriptor instanceDesc = {};
instanceDesc.nextInChain = nullptr;
WGPUInstance instance = wgpuCreateInstance(&instanceDesc);
if (!instance)
{
std::cerr << "Failed to create WebGPU Instance." << std::endl;
SDL_DestroyWindow(window);
SDL_Quit();
return -1;
}
std::cout << "SDL3_net and WebGPU Native initialized successfully!" << std::endl;
bool running = true;
SDL_Event event;
while (running)
{
while (SDL_PollEvent(&event))
{
if (event.type == SDL_EVENT_QUIT)
{
running = false;
}
}
}
wgpuInstanceRelease(instance);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
2. File Contents for CMakeLists.txt 2. Содержимое файла CMakeLists.txt
cmake_minimum_required(VERSION 3.21)
project(sdl3-net-webgpu-starter CXX)
set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(PROJECT_SOURCES
src/main.cpp
)
add_executable(app)
target_sources(app PRIVATE ${PROJECT_SOURCES})
if(WIN32)
# SDL3 Net Static
add_library(SDL3_net_Static STATIC IMPORTED)
set_target_properties(SDL3_net_Static PROPERTIES
IMPORTED_LOCATION "C:/libs/sdl3-net-3.2.0-mingw/lib/libSDL3_net.a"
INTERFACE_INCLUDE_DIRECTORIES "C:/libs/sdl3-net-3.2.0-mingw/include"
INTERFACE_LINK_LIBRARIES "ws2_32;iphlpapi"
)
# SDL3 Core Static
add_library(SDL3_Static STATIC IMPORTED)
set_target_properties(SDL3_Static PROPERTIES
IMPORTED_LOCATION "C:/libs/sdl3-3.4.16-mingw/lib/libSDL3.a"
INTERFACE_INCLUDE_DIRECTORIES "C:/libs/sdl3-3.4.16-mingw/include"
INTERFACE_LINK_LIBRARIES "winmm;imm32;version;setupapi;dinput8"
)
# WGPU Static
add_library(wgpu_native STATIC IMPORTED)
set_target_properties(wgpu_native PROPERTIES
IMPORTED_LOCATION "C:/libs/wgpu-29.0.1.1-mingw/lib/libwgpu_native.a"
INTERFACE_INCLUDE_DIRECTORIES "C:/libs/wgpu-29.0.1.1-mingw/include"
INTERFACE_LINK_LIBRARIES "ws2_32;userenv;ntdll;bcrypt;d3d12;dxgi"
)
target_link_libraries(app PRIVATE
SDL3_net_Static
SDL3_Static
wgpu_native
)
target_compile_options(app PRIVATE -Os)
target_link_options(app PRIVATE -static -s -static-libgcc -static-libstdc++)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
target_link_options(app PRIVATE -mconsole)
else()
target_link_options(app PRIVATE -mwindows)
endif()
else()
# Ubuntu / Linux Configuration
add_library(SDL3_Static STATIC IMPORTED)
set_target_properties(SDL3_Static PROPERTIES
IMPORTED_LOCATION "$ENV{HOME}/libs/sdl3-3.4.16-ubuntu/lib/libSDL3.a"
INTERFACE_INCLUDE_DIRECTORIES "$ENV{HOME}/libs/sdl3-3.4.16-ubuntu/include"
)
add_library(SDL3_net_Static STATIC IMPORTED)
set_target_properties(SDL3_net_Static PROPERTIES
IMPORTED_LOCATION "$ENV{HOME}/libs/sdl3-net-3.2.0-ubuntu/lib/libSDL3_net.a"
INTERFACE_INCLUDE_DIRECTORIES "$ENV{HOME}/libs/sdl3-net-3.2.0-ubuntu/include"
)
add_library(wgpu_native STATIC IMPORTED)
set_target_properties(wgpu_native PROPERTIES
IMPORTED_LOCATION "$ENV{HOME}/libs/wgpu-native-29.0.1.1-ubuntu/lib/libwgpu_native.a"
INTERFACE_INCLUDE_DIRECTORIES "$ENV{HOME}/libs/wgpu-native-29.0.1.1-ubuntu/include"
)
target_link_libraries(app PRIVATE
SDL3_net_Static
SDL3_Static
wgpu_native
pthread
dl
)
endif()
Step 3: Create Build & Execution Scripts Шаг 3: Создание скриптов сборки и запуска
Windows (MinGW / Batch Scripts)
config-exe.bat
cmake -G Ninja -S . -B dist/win
build-exe.bat
cmake --build dist/win
run-exe.bat
@echo off
.\dist\win\app.exe
Run the scripts sequentially in Command Prompt or PowerShell: Последовательно запустите скрипты в командной строке или PowerShell:
config-exe.bat
build-exe.bat
run-exe.bat
Ubuntu (Bash Scripts)
config-bin.sh
#!/usr/bin/env bash
set -e
cmake -G Ninja -S . -B dist/linux
build-bin.sh
#!/usr/bin/env bash
set -e
cmake --build dist/linux
run-bin.sh
#!/usr/bin/env bash
set -e
./dist/linux/app
Grant execute permissions on Ubuntu before running: Предоставьте права на выполнение в Ubuntu перед запуском:
chmod +x config-bin.sh build-bin.sh run-bin.sh
./config-bin.sh
./build-bin.sh
./run-bin.sh
Step 4: Expected Output Шаг 4: Ожидаемый результат
After building and running the executable, you should see output confirming that SDL3_net and WebGPU Native initialized successfully: После сборки и запуска исполняемого файла вы должны увидеть вывод, подтверждающий успешную инициализацию SDL3_net и WebGPU Native:
SDL3_net and WebGPU Native initialized successfully!
Support My Work Поддержать проект
If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.
Sberbank (Russia only) Сбербанк (только для РФ)
Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)
USDT TRC20
Support via Cryptocurrency Поддержка криптовалютой