我正在使用QtCreator编译Android的库。构建完成后,我需要将其复制到特定位置。
我在Qt 5.6和NDK r11b上使用了QtCreator 4.0.3
我现在正在使用Qt 5.12和NDK r18b将代码迁移到QtCreator 4.8.0
在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最终将lib从第一个位置复制到第二个位置。因此很可能会尝试从错误的位置复制库。
我尝试了其他一些选择:
尝试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文件复制到特定位置?
答案 0 :(得分:0)
可以使其与QMAKE_POST_LINK
一起使用(需要+=
而不是=
):
QMAKE_POST_LINK += $(COPY_FILE) $$shell_path($$OUT_PWD)\lib$${TARGET}.so $$shell_path(<path to the place where I wish the binary to be copied>)