#android #c #windows #cmake
Вопрос:
Я хотел бы создать проект cmake, который может генерировать решение MSVS 2019, которое либо создается для Windows, либо для Android.
Я создал каталог под названием myCmakeProject.
Я создал CMakeLists.txt файл и поместил его в каталог myCmakeProject.
Я также создал тестовый файл cpp main.cpp и поместил это в каталог myCmakeProject.
В CMakeLists.txt файл содержит следующее:
cmake_minimum_required(VERSION 3.10.2)
project(projectname)
add_library(libname STATIC main.cpp)
Я создал подкаталог под названием «сборка» в каталоге myCmakeProject.
В каталоге «сборка» я создал файл buildproject.bat, содержащий следующее:
cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-16 -DANDROID_NDK=C:Users{user}AppDataLocalAndroidSdkndk22.1.7171670 -DCMAKE_TOOLCHAIN_FILE=C:Users{username}AppDataLocalAndroidSdkndk22.1.7171670buildcmakeandroid.toolchain.cmake ..
Когда я запускаю buildproject.bat, он генерирует решение MSVS 2019, и оно почти выглядит правильным, но если
Я не ошибаюсь, решение MSVS создает статическую библиотеку для архитектуры x86/x64. Мне нужно, чтобы
он создавался либо для arm64-v8a, либо для armeabi-v7a при сборке для Android и для x86/x64 при сборке для Windows.
Как мне изменить свой проект cmake, чтобы проект cmake либо создавал:
- решение MSVS 2019, которое создает код C для Windows (x86 или x64)
или
- решение MSVS 2019, которое создает код C для Android (32-разрядный arm или 64-разрядный arm)
Комментарии:
1. Если вы вызвали
cmake
один раз, вы не сможете изменить набор инструментов, не удалив все сгенерированные файлы проекта и кэши. Вам нужны два отдельныхbuild
каталога, по одному для каждого типа.2. @Someprogrammerdude Да, я в курсе этого. Должна быть возможность передать параметр в файл .bat, чтобы он либо создавал решение MSVS 2019 для Android, либо решение MSVS 2019 для Windows….правильно?
3. Нет, не совсем. Если вы перейдете с native на cross, вы должны удалить все , что было создано ранее
cmake
. Поэтому проще иметь два реальных и отдельных каталога сборки, один для native и один для cross.4. @Someprogrammerdude В этом случае я хотел бы знать, как должен выглядеть файл bat для сборки Android и как должен выглядеть другой файл bat для сборки Windows.
5. AFAICT для Android именно так, как вы нам его показываете, и для Windows без
-D
аргументов.