Я пытаюсь построить длительный настольный проект qt, используя недавно установленные инструменты Android SDK / ndk. Когда я пытаюсь собрать, у меня есть несколько вызовов функций, которые сводятся к следующему:
void callError(const std::string& message) const {
// do something
}
callError("Some String");
... которые вызывают такие ошибки:
../MyFile.h:42:23: error: reference to type 'const std::string' (aka 'const basic_string<char, char_traits<char>, allocator<char> >') could not bind to an lvalue of type 'const char [43]'
callError("Some String");
Я, черт возьми, гуглил это и искал уже по форумам qt и stackoverflow, и пока не могу найти рабочее исправление ... Моя рабочая догадка заключается в том, что мне нужно передать специальный android / sdk / ndk специфичный Флаг использования функций C ++ 11/14/17, но я не уверен. Это текущий запуск моего вызова компилятора, когда я пытаюсь собрать с помощью инструментария Android:
/home/pete/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -c -D__ANDROID_API__=21 -target aarch64-none-linux-android -gcc-toolchain /home/pete/Android/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64 -DANDROID_HAS_WSTRING --sysroot=/home/pete/Android/Sdk/ndk-bundle/sysroot -isystem /home/pete/Android/Sdk/ndk-bundle/sysroot/usr/include/aarch64-linux-android -isystem /home/pete/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include -isystem /home/pete/Android/Sdk/ndk-bundle/sources/android/support/include -isystem /home/pete/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++abi/include -fstack-protector-strong -DANDROID -std=c++17 -lstdc++fs -O2 -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
Оттуда он ссылается на все не зависящие от платформы заголовки, src и библиотеки, которые я использую. Я вижу, что флаг -std = c ++ 17 есть, но я готов либо указать, что порядок отсутствует, либо флаги должны быть другими ... Чтобы использовать этот флаг, я сейчас добавляю его в свой файл .pro :
QMAKE_CXXFLAGS += -std=c++17
Моя настройка:
- Qt5.12.1
- QtCreator 4.8.2
- Clang 8 в комплекте с NDK (я проверил версию в комплекте NDK вручную)
- SDK версия 26.1.1
- NDK версия 19.2.5345600
Я также не могу не заметить это в вызове компилятора:
D__ANDROID_API__=21
Это важно? Я бы подумал, что это должно сказать = 26 для версии SDK, не так ли?