Чтобы продемонстрировать эту проблему, я сделал минимум CMakeLists.txt:
cmake_minimum_required(VERSION 3.12)
project(FlagsTest)
add_executable(myapp myapp.cpp)
Я настраиваю этот проект cmake с помощью файла набора инструментов внутри Android NDK. Используется генератор ниндзя, а кешированная переменная cmake ANDROID_ABI
установлена на armeabi-v7a
. Версии программного обеспечения и набора инструментов:
- CMake: 3.12.3 и 3.14.6 в Windows.
- Android NDK и файл набора инструментов:
C:/Users/my_name/AppData/Local/Android/Sdk/ndk/20.0.5594570/build/cmake/android.toolchain.cmake
- ниндзя: 1.9.0
Весь материал успешно настроен и сгенерирован. Тем не менее, переменные кэша cmake CMAKE_CXX_FLAGS_DEBUG
, CMAKE_CXX_FLAGS_RELEASE
, CMAKE_C_FLAGS_DEBUG
и CMAKE_C_FLAGS_RELEASE
являются все пустыми . Это привело к отсутствию символа отладки в сборке отладки и оптимизации в сборке выпуска, что нас сильно беспокоило.
В настоящее время я сделал обходной путь, вручную указав эти переменные из командной строки cmake. Но так как эти переменные должны автоматически устанавливаться с помощью cmake, мне интересно, является ли это ошибкой в cmake или ошибкой в Android SDK.