Компиляция приложения SDL + BGFX для Android с CMAKE и VCPKGC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Компиляция приложения SDL + BGFX для Android с CMAKE и VCPKG

Сообщение Anonymous »

Я сделал небольшое приложение SDL, BGFX, CMAKE и VCPKG, которое является текстурированным кубом, вращающимся вокруг. Я заставил приложение работать на своей машине Windows, и теперь я пытаюсь заставить его работать на моем телефоне Android. com/libsdl-org/sdl/blob/main/docs/readme android.md и я работаю над всеми проблемами градл. В настоящее время я застрял на VCPKG Compling BGFX (и, вероятно, все) для x64-android, когда целью является ARM64-V8A.
Проблемы начались, потому что cmake_toolchain_file используется для поиска/установки Vcpkg .cmake file, но при использовании NDK он устанавливается в местоположение файла NDK. Поэтому я добавил include ("c:/users/charl/.vcpkg-clion/vcpkg/scripts/buildsystems/vcpkg.cmake") к файлу cmakelists.txt, чтобы Vcpkg использовался.
Полная ошибка после запуска. \ gradlew.bat installdebug - это: < /p>

Код: Выделить всё

.\gradlew.bat installDebug

> Task :app:buildCMakeDebug[arm64-v8a] FAILED
C/C++: ninja: Entering directory `C:\Users\charl\CLionProjects\Crossplatform\android-project\app\.cxx\Debug\3j4z1g21\arm64-v8a'
C/C++: cmd.exe /C "cd .  && C:\Users\charl\AppData\Local\Android\Sdk\ndk\27.0.12077973\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android21 --sysroot=C:/Users/charl/AppData/Local/Android/Sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security   -fno-limit-debug-info  -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libCrossplatform.so -o ..\..\..\..\build\intermediates\cxx\Debug\3j4z1g21\obj\arm64-v8a\libCrossplatform.so CMakeFiles/Crossplatform.dir/main.cpp.o  vcpkg_installed/x64-android/debug/lib/libbx.a  vcpkg_installed/x64-android/debug/lib/libbgfx.a  vcpkg_installed/x64-android/debug/lib/libbimg.a  vcpkg_installed/x64-android/debug/lib/libbimg_decode.a  vcpkg_installed/x64-android/debug/lib/libSDL3.a  vcpkg_installed/x64-android/debug/lib/libglm.a  vcpkg_installed/x64-android/debug/lib/libbx.a  C:/Users/charl/AppData/Local/Android/Sdk/ndk/28.0.12916984/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/x86_64-linux-android/21/liblog.so  vcpkg_installed/x64-android/debug/lib/libtinyexr.a  vcpkg_installed/x64-android/debug/lib/libminiz.a  -lm  -lOpenSLES  -ldl  -llog  -landroid  -lGLESv1_CM  -lGLESv2  -latomic -lm && cd ."
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbx.a(amalgamated.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbgfx.a(amalgamated.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_averages_and_directions.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_block_sizes.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_color_quantize.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_color_unquantize.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_compress_symbolic.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_compute_variance.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_decompress_symbolic.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_diagnostic_trace.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_entry.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_find_best_partitioning.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_ideal_endpoints_and_weights.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_image.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_integer_sequence.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_mathlib.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_mathlib_softfloat.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_partition_tables.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_percentile_tables.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_pick_best_endpoint_format.cpp.o) is incompatible with aarch64linux
C/C++: ld.lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
C/C++: clang++: error: linker command failed with exit code 1 (use -v to see invocation)
C/C++: ninja: build stopped: subcommand failed.

[Incubating] Problems report is available at: file:///C:/Users/charl/CLionProjects/Crossplatform/android-project/build/reports/problems/problems-report.html

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:buildCMakeDebug[arm64-v8a]'.
>  com.android.ide.common.process.ProcessException: ninja: Entering directory `C:\Users\charl\CLionProjects\Crossplatform\android-project\app\.cxx\Debug\3j4z1g21\arm64-v8a'
[1/1] Linking CXX shared library ..\..\..\..\build\intermediates\cxx\Debug\3j4z1g21\obj\arm64-v8a\libCrossplatform.so
FAILED: ../../../../build/intermediates/cxx/Debug/3j4z1g21/obj/arm64-v8a/libCrossplatform.so
cmd.exe /C "cd .  && C:\Users\charl\AppData\Local\Android\Sdk\ndk\27.0.12077973\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android21 --sysroot=C:/Users/charl/AppData/Local/Android/Sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_F
ORTIFY_SOURCE=2 -Wformat -Werror=format-security   -fno-limit-debug-info  -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libCrossplatform.so -o ..\..\..\..\build\intermediates\cxx\Debug\3j4z1g21\obj\arm64-v8a\libCrossplatform.so CMakeFiles/Crossplatform.dir/main.cpp.o  vcpkg_installed/x64-android/d
ebug/lib/libbx.a  vcpkg_installed/x64-android/debug/lib/libbgfx.a  vcpkg_installed/x64-android/debug/lib/libbimg.a  vcpkg_installed/x64-android/debug/lib/libbimg_decode.a  vcpkg_installed/x64-android/debug/lib/libSDL3.a  vcpkg_installed/x64-android/debug/lib/libglm.a  vcpkg_installed/x64-android/debug/lib/libbx.a  C:/Users/charl/AppData/Local/Android/Sdk/ndk/28.0.12916984/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/x86_64-linux-android/21/liblog.so  vcpkg_installed/x64-android/debug/lib/libtinyexr.a  vcpkg_installed/x64-android/debug/lib/libminiz.a  -lm  -lOpenSLES  -ldl  -llog  -landroid  -lGLESv1_CM  -lGLESv2  -latomic -lm && cd ."
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbx.a(amalgamated.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbgfx.a(amalgamated.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_averages_and_directions.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_block_sizes.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_color_quantize.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_color_unquantize.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_compress_symbolic.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_compute_variance.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_decompress_symbolic.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_diagnostic_trace.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_entry.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_find_best_partitioning.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_ideal_endpoints_and_weights.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_image.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_integer_sequence.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_mathlib.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_mathlib_softfloat.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_partition_tables.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_percentile_tables.cpp.o) is incompatible with aarch64linux
ld.lld: error: vcpkg_installed/x64-android/debug/lib/libbimg.a(astcenc_pick_best_endpoint_format.cpp.o) is incompatible with aarch64linux
ld.lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

C++ build system [build] failed while executing:
@echo off
"C:\\Users\\charl\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe" ^
-C ^
"C:\\Users\\charl\\CLionProjects\\Crossplatform\\android-project\\app\\.cxx\\Debug\\3j4z1g21\\arm64-v8a" ^
Crossplatform
from C:\Users\charl\CLionProjects\Crossplatform\android-project\app

* Try:
> Run with --stacktrace option to get the stack trace.
>  Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.12/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 1s
18 actionable tasks: 2 executed, 16 up-to-date
< /code>
И моя интерпретация такова: мои файлы собираются для ARM64, но VCPKG считает, что я использую X64-Android. Я попытался исправить это, установив этот набор (vcpkg_target_triplet "arm64-android" string "vcpkg triplet") 
in cmakelists.txt перед командой включения , но это ничего не сделало.
GitHub здесь: https://github.com/tasmaniannoob/crossplatform и я использую Clion.
in android-project/gradle.properties Я установил org.gradle.java. Home = C:/Program Files/Java/JDK-21 и в Android-project/local.properties Я установил sdk.dir = c:/users/chral/appdata/local/android/sdk .
Мне нужно было отредактировать файл vcpkg/scripts/toolchains/android.cmake, потому что переменные среды не были переданы, поэтому сценарий не имел набора Android_ndk_home. Я просто жестко закодировал местоположение. Я сделаю отдельный вопрос об этом.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -and-vcpkg
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»