Converting an Android SDL3 C Project to C++ Конвертация C-проекта SDL3 для Android в C++

A guide to updating CMake, Gradle, file extensions, and cleaning build artifacts to migrate an Android SDL3 C project to C++20. Руководство по обновлению CMake, Gradle, расширений файлов и очистке артефактов сборки для миграции C-проекта SDL3 под Android на C++20.

You can use this guide on your existing project or reference the ready-to-use C and C++ template repositories: Вы можете использовать это руководство для своего проекта или обратиться к готовым шаблонам:

Step 1: Rename Project Folder Шаг 1: Переименование папки проекта

If you copied your project directory (e.g., android-app-sdl3-c), rename the root directory to your new C++ project name: Если вы скопировали директорию проекта (например, android-app-sdl3-c), переименуйте корневую папку в новое имя C++ проекта:

android-app-sdl3-cpp

Step 2: Rename Source File Шаг 2: Переименование исходного файла

Rename your main source file extension from .c to .cpp: Переименуйте расширение вашего главного файла с исходным кодом с .c на .cpp:

src/main.csrc/main.cpp

Step 3: Update CMakeLists.txt Шаг 3: Обновление CMakeLists.txt

Update your root CMakeLists.txt to set the project name, standard flags for C++20, and point to src/main.cpp: Обновите ваш корневой CMakeLists.txt, указав имя проекта, флаги стандарта C++20 и путь к src/main.cpp:

cmake_minimum_required(VERSION 3.21)
project(android-app-sdl3-cpp)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_library(SDL3 SHARED IMPORTED)
set_target_properties(SDL3 PROPERTIES
    IMPORTED_LOCATION "C:/libs/sdl3-android/arm64-v8a/lib/libSDL3.so"
)

add_library(app SHARED src/main.cpp)

target_include_directories(app PRIVATE "C:/libs/sdl3-android/arm64-v8a/include")

target_link_libraries(app PRIVATE SDL3)

Step 4: Update build.gradle Шаг 4: Обновление build.gradle

Open android-project/app/build.gradle and append '-DCMAKE_CXX_STANDARD=20' to the CMake arguments: Откройте android-project/app/build.gradle и добавьте '-DCMAKE_CXX_STANDARD=20' в аргументы CMake:

externalNativeBuild {
    cmake {
        arguments '-DANDROID_STL=c++_shared', '-DCMAKE_CXX_STANDARD=20'
        abiFilters 'arm64-v8a'
    }
}

Step 5: Clean Build Artifacts Шаг 5: Очистка артефактов сборки

Delete old build files and CMake caches to ensure a clean build for C++: Удалите старые файлы сборки и кэш CMake, чтобы гарантировать чистую пересборку для C++:

  • android-project\.gradle
  • android-project\build
  • android-project\app\.cxx
  • android-project\app\build

Support My Work Поддержать проект

If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.

Sberbank (Russia only) Сбербанк (только для РФ)

Sberbank SBP QR Code

Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)

+7 (917) 212-29-59

USDT TRC20

USDT TRC20 QR Code

Support via Cryptocurrency Поддержка криптовалютой

TMtY1YifNf6FKvgeFmqKGQR4NStKr3csGp