QT编译时,出现一个很奇怪的问题,在链接obj的时候,经常会有几个文件少一些字母。
compiling D:\Source\qgroundcontrol\libs\qtandroidserialport\src\qserialport.cpp
compiling rcc\qrc_qmake_qmake_qm_files.cpp
linking release\libQGroundControl.so
clang++.exe: error: no such file or directory: 'obj\src_Microhard_MicrohardSettings_qml.ob'
clang++.exe: error: no such file or directory: 'obj\src_AutoPiotPlugins_APM_APMFlightModesComponentSummary_qml.obj'
clang++.exe: error: no such file or directory: 'obj\moc_FactPanelControllr.obj'
make: *** [release\libQGroundControl.so] Error 1
16:04:54: 进程"D:\Android\android-ndk-r19c\prebuilt\windows-x86_64\bin\make.exe"退出,退出代码 2 。
Error while building/deploying project qgroundcontrol (kit: Android for armeabi-v7a (Clang Qt 5.12.3 for Android ARMv7))
When executing step "Make"
第一个少个j,对应文件:obj\src_Microhard_MicrohardSettings_qml.obj
第三个少个e,对应文件:obj\moc_FactPanelController.obj
暂时找不出原因,我近错误的名称搜索文件,没有搜索到对应的文件内容。
晚上发现,这个其实就是Makefile里的内容,用$(waring $(XXX))输出信息,发现命令串里的文件名称并没有错,估计是我在WIN下编译,字符编码的问题。
少字符的话,只能修改对应的obj文件名称来适应这种错误,如果出现*objobj\这类的,如果添加*.objobj这样的文件夹的话,会提示另外的错误,*.obj这个文件内容找不到了。我对这种情况的处理方式是在Makefile中定位这个错误的的字符,然后在*.obj obj\之间用\t\t\t来间隔开。