在 armhf 上使用 cmake 在 qt 上的编译问题 "Syntax error: wird unexpected (expecting " ) " "

Compilation problem on armhf with cmake on qt "Syntax error: wird unexpected (expecting ")""

本文关键字:error wird unexpected expecting Syntax 问题 armhf cmake qt 编译      更新时间:2023-10-16

最近我对Qt的工作很感兴趣,我开始了一个项目,我需要交叉编译它。 在我的电脑上,一切似乎都很好,就像你在下面看到的那样,但在我同事的电脑上,我遇到了一些错误。我一直在寻找一些答案,但没有找到任何东西......

~/work/qt/malo_zelie/armhf_build >cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: malo_zelie/armhf_build
~/work/qt/malo_zelie/armhf_build >make
Scanning dependencies of target malo_zelie_automoc
[ 16%] Automatic moc, uic and rcc for target malo_zelie
Generating moc source malo_zelie_automoc.dir/moc_mainwindow_BMDIVWC5MAP5U5.cpp
Generating moc compilation malo_zelie_automoc.cpp
Generating ui header ui_mainwindow.h
[ 16%] Built target malo_zelie_automoc
[ 33%] Generating ../malo_zelie_fr_FR.ts
Scanning directory '/home/mael/work/qt/malo_zelie'...
Updating '../malo_zelie_fr_FR.ts'...
Found 1 source text(s) (0 new and 1 already existing)
Scanning dependencies of target malo_zelie
[ 50%] Building CXX object CMakeFiles/malo_zelie.dir/src/main.cpp.o
[ 66%] Building CXX object CMakeFiles/malo_zelie.dir/src/mainwindow.cpp.o
[ 83%] Building CXX object CMakeFiles/malo_zelie.dir/malo_zelie_automoc.cpp.o
[100%] Linking CXX executable malo_zelie
[100%] Built target malo_zelie

但是在我朋友的计算机上,这是我得到的:

:~/workspace/malo_zelie_qt/armhf_build$ cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: malo_zelie_qt/armhf_build
colin@debian:~/workspace/malo_zelie_qt/armhf_build$ make
[ 16%] Automatic moc, uic and rcc for target malo_zelie
Generating moc source malo_zelie_automoc.dir/moc_mainwindow_BMDIVWC5MAP5U5.cpp
/usr/lib/arm-linux-gnueabihf/qt5/bin/moc: 1: /usr/lib/arm-linux-gnueabihf/qt5/bin/moc: Syntax error: word unexpected (expecting ")")
AUTOGEN: error: process for /home/colin/workspace/malo_zelie_qt/armhf_build/malo_zelie_automoc.dir/moc_mainwindow_BMDIVWC5MAP5U5.cpp failed:
/usr/lib/arm-linux-gnueabihf/qt5/bin/moc: 1: /usr/lib/arm-linux-gnueabihf/qt5/bin/moc: Syntax error: word unexpected (expecting ")")
Generating moc compilation malo_zelie_automoc.cpp
Generating ui header ui_mainwindow.h
/usr/lib/arm-linux-gnueabihf/qt5/bin/uic: 1: /usr/lib/arm-linux-gnueabihf/qt5/bin/uic: Syntax error: word unexpected (expecting ")")
AUTOUIC: error: process for ui_mainwindow.h needed by
"/home/colin/workspace/malo_zelie_qt/src/mainwindow.cpp"
failed:
/usr/lib/arm-linux-gnueabihf/qt5/bin/uic: 1: /usr/lib/arm-linux-gnueabihf/qt5/bin/uic: Syntax error: word unexpected (expecting ")")
moc failed...
CMakeFiles/malo_zelie_automoc.dir/build.make:57 : la recette pour la cible « CMakeFiles/malo_zelie_automoc » a échouée
make[2]: [CMakeFiles/malo_zelie_automoc] 
Erreur 1 CMakeFiles/Makefile2:104 : la recette pour la cible « CMakeFiles/malo_zelie_automoc.dir/all » a échouée make[1]: [CMakeFiles/malo_zelie_automoc.dir/all] 
Erreur 2 Makefile:83 : la recette pour la cible « all » a échouée make: [all] Erreur 2

这是CmakeList.txt :

cmake_minimum_required(VERSION 3.5)
project(malo_zelie LANGUAGES CXX)
set( CMAKE_PREFIX_PATH "~/Qt/5.15.0" )
option( USE_CLANG "Use Clang compiler." OFF )
option( USE_LIBCPP "Use LLVM's libc++ instead of GNU's libstdc++ (requires clang)" OFF )
option( USE_ARMHF "use armhf compiler and linker." OFF)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
# They need to be set before the find_package(Qt5 ...) call.
#if(ANDROID)
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
#    if (ANDROID_ABI STREQUAL "armeabi-v7a")
#        set(ANDROID_EXTRA_LIBS
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
#    endif()
#endif()
if( USE_ARMHF )
set( CMAKE_FIND_ROOT_PATH "/usr/lib/arm-linux-gnueabihf/")
set( COMXENTEO "ComXenteo2-armhf")
set( CMAKE_LINKER "arm-linux-gnueabihf-ld")
set( CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++" )
set( CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FMAGS} -Wno-attributes")
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3" )
set( Qt5Core_DIR "/usr/lib/arm-linux-gnueabihf/cmake/Qt5Core" )
set( Qt5Gui_DIR "/usr/lib/arm-linux-gnueabihf/cmake/Qt5Gui" )
set( Qt5LinguistTools_DIR "/usr/lib/arm-linux-gnueabihf/cmake/Qt5LinguistTools" )
set( Qt5Widgets_DIR "/usr/lib/arm-linux-gnueabihf/cmake/Qt5Widgets" )
set( Qt5_DIR "/usr/lib/arm-linux-gnueabihf/cmake/Qt5" )
else()
set( CMAKE_FIND_ROOT_PATH "/usr/lib/x86_64-linux-gnu/")
set( Qt5Core_DIR "/usr/lib/x86_64-linux-gnu/cmake/Qt5Core" )
set( Qt5Gui_DIR "/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui" )
set( Qt5LinguistTools_DIR "/usr/lib/x86_64-linux-gnu/cmake/Qt5LinguistTools" )
set( Qt5Widgets_DIR "/usr/lib/x86_64-linux-gnu/cmake/Qt5Widgets" )
set( Qt5_DIR "/usr/lib/x86_64-linux-gnu/cmake/Qt5" )
set(COMXENTEO "ComXenteo2-x64")
if( USE_CLANG )
set( CMAKE_CXX_COMPILER "clang++" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-padded" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-weak-vtables" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++98-compat -Wno-c++98-compat-pedantic" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-exit-time-destructors" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-global-constructors" )
if( USE_LIBCPP )
set( ${CMAKE_CXX_FLAGS} "${CMAKE_CXX_FLAGS} -stdlib=libc++" )
endif        
endif()
endif()
find_package( Qt5 COMPONENTS Widgets LinguistTools REQUIRED)
set(TS_FILES malo_zelie_fr_FR.ts)
file( GLOB malo_zelie_src "src/*.cpp" "src/*.h" "src/*.ui" )
if(ANDROID)
add_library(malo_zelie SHARED
${malo_zelie_src}
${TS_FILES}
)
else()
add_executable(malo_zelie
${malo_zelie_src}
${TS_FILES}
)
endif()
set( EXT_LIBS
#       ${sga_LIBRARIES}
${COMXENTEO}
)
set( EXT_INCLUDES
#       ${sga_INCLUDE_DIRS}
)
set( EXT_COMP
# ${sga_CFLAGS_OTHER}
)
target_link_libraries( malo_zelie PRIVATE Qt5::Widgets ${EXT_LIBS} )
target_include_directories( malo_zelie PUBLIC src ${EXT_INCLUDES} )
target_compile_options( malo_zelie PUBLIC ${EXT_COMP} )
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})()

有人知道吗?对不起,这个笨拙的帖子,这是我的第一个。

哦,就是这样,感谢 Frant,在我的电脑上安装了 qemu,所以我可以运行 arm 二进制文件,但在我同事的电脑上,qemu 没有安装,moc uic 和 rcc 调用是 arm 二进制文件,我应该在将来更改它,但现在我只是在他的计算机上安装了 qemu,一切正常, 感谢。

相关文章: