Я собираю библиотеку для Android, используя QtCreator. После того, как он будет построен, его нужно скопировать в определенное место.
Я использовал QtCreator 4.0.3 с Qt 5.6 и NDK r11b
Я сейчас переношу свой код на QtCreator 4.8.0 с Qt 5.12 и NDK r18b
В QtCreator 4.0.3 у меня было:
DESTDIR = <path to the place where I wish the binary to be copied>
И это сработало идеально (.so файл был скопирован после его создания)
С QtCreator 4.8.0 я получаю ошибку:
move libsde3p_cppunit-g.so <path to the place where I wish the binary to be copied>\libsde3p_cppunit-g.so
process_begin: CreateProcess(NULL, move libsde3p_cppunit-g.so <path to the place where I wish the binary to be copied>\libsde3p_cppunit-g.so, ...) failed.
make (e=2): Le fichier spécifié est introuvable.
Я вижу, что когда сообщается об этой ошибке, <my build folder>\build-cppunit-Android_for_armeabi_v7a_Clang_Qt_5_12_0_for_Android_ARMv7-Debug\libsde3p_cppunit-g.so
существует, а <my build folder>\build-cppunit-Android_for_armeabi_v7a_Clang_Qt_5_12_0_for_Android_ARMv7-Debug\android-build\libs\armeabi-v7a\libsde3p_cppunit-g.so
еще нет. И я знаю, что QtCreator наконец-то копирует библиотеку из этого первого местоположения во второе. Поэтому, скорее всего, он пытается скопировать библиотеку из неправильного места.
Я пробовал другие варианты:
Попытка QMAKE_POST_LINK = copy...
это, по-видимому, никогда не выполняется (QMAKE_POST_LINK = djdkdk
не сообщает об ошибке).
Пробные пользовательские цели:
custom_copy_step.target = foo.h
custom_copy_step.commands = $(COPY_FILE) $$shell_path($$OUT_PWD)\lib$${TARGET}.so $$shell_path(<path to the place where I wish the binary to be copied>
QMAKE_EXTRA_TARGETS += custom_copy_step
POST_TARGETDEPS += foo.h
На этот раз не получается с ошибкой:
copy /y <my build folder>\build-cppunit-Android_for_armeabi_v7a_Clang_Qt_5_12_0_for_Android_ARMv7-Debug\libsde3p_cppunit-g.so <path to the place where I wish the binary to be copied>
Le fichier sp‚cifi‚ est introuvable.
make: *** [foo.h] Error 1
И я подтверждаю, что файл lib отсутствует на диске, поэтому похоже, что команда выполняется до фактического создания .so.
Какие инструкции я должен добавить в мой .pro-файл, чтобы выходной .so-файл был скопирован в определенное место?