[QT][?] Found unsuitable Qt version "5.0.2"from/usr/bin/qmake, this code requires Qt 4.x

4159 단어
1. 디버그 오류: Found unsuitable Qt version "5.0.2"from/usr/bin/qmake,this code requires Qt 4.x
CMake Error at/usr/share/cmake-2.8/Modules/FindQt4.cmake:1193 (MESSAGE):
Found unsuitable Qt version "5.0.2"from/usr/bin/qmake, this code requires Qt 4.x
Call Stack (most recent call first): ros_tutorials-hydro-devel/turtlesim/CMakeLists.txt:6 (find_package)
다음 명령을 실행합니다. sudo apt-get install qt4-defaultThe following packages will be REMOVED:   qt5-default The following NEW packages will be installed:   qt4-default sudo apt-get install qt5-default
2.   usr/bin/ld: cannot open output file test: Is a directory
프롬프트 오류
/usr/bin/ld: cannot open output file test: Is a directory collect2: ld returned 1 exit status
폴더 이름
SET(main_src_SOURCES ${treebot_SOURCE_DIR}/main_src/mainwindow.cpp
                 ${treebot_SOURCE_DIR}/main_src/serialport.cpp
                 ${treebot_SOURCE_DIR}/main_src/util.cpp
                 ${treebot_SOURCE_DIR}/main_src/slidervelocity.cpp
  )

SET(main_src_HEADERS ${treebot_SOURCE_DIR}/main_src/mainwindow.h
                 ${treebot_SOURCE_DIR}/main_src/serialport.h
                 ${treebot_SOURCE_DIR}/main_src/treerobotconstant.h
                 ${treebot_SOURCE_DIR}/main_src/slidervelocity.h
                 ${treebot_SOURCE_DIR}/main_src/util.h
)

QT5_WRAP_CPP(main_src_HEADERS_MOC ${main_src_HEADERS})
    QT5_WRAP_CPP 시 컴파일 경로build에서main 생성src 폴더에 해당하는 cmake 캐시를 저장합니다.
나는 또 이런 실행 파일을 생성하려면mainsrc  ;같은 이름을 만들어서 실행 파일을 생성할 수 없음mainsrc.
  
add_executable(main_src   ${treebot_SOURCE_DIR}/main_src/main.cpp
                       # ${treebot_SOURCE_DIR}/qrslam/CameraEstimation.cpp
                       # ${treebot_SOURCE_DIR}/qrslam/CameraEstimation.h
                        ${main_src_SOURCES}  ${main_src_HEADERS_MOC}   ${main_src_HEADERS}  ${main_src_UI_HEADERS}
 )

TARGET_LINK_LIBRARIES(main_src ${Qt5Core_LIBRARIES}  ${Qt5Widgets_LIBRARIES}  ${Qt5Gui_LIBRARIES}  ${Qt5SerialPort_LIBRARIES}
                      CameraEstimation
 )

해결 방법:
1).컴파일 경로 경로 설정하기;
        :          /bin 

   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
   set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)

2). 실행 파일 이름을 변경합니다.
add_executable(treebot   ${treebot_SOURCE_DIR}/main_src/main.cpp
                       # ${treebot_SOURCE_DIR}/qrslam/CameraEstimation.cpp
                       # ${treebot_SOURCE_DIR}/qrslam/CameraEstimation.h
                        ${main_src_SOURCES}  ${main_src_HEADERS_MOC}   ${main_src_HEADERS}  ${main_src_UI_HEADERS}
 )

TARGET_LINK_LIBRARIES(treebot ${Qt5Core_LIBRARIES}  ${Qt5Widgets_LIBRARIES}  ${Qt5Gui_LIBRARIES}  ${Qt5SerialPort_LIBRARIES}
                      CameraEstimation
 )

3. qt5_wrap_ui에서 생성된 헤더 파일 uimainwindow.h에서 #include "slidervelocity.h"파일에 오류가 발생했습니다.
#CMakeLists.txt  
 qt5_wrap_ui(main_src_UI_HEADERS ${treebot_SOURCE_DIR}/main_src/mainwindow.ui)
<span style="color:#be1414;">//ui_mainwindow.h</span> 
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>
#include "slidervelocity.h"

문제 원인: 주로 cmake가 생성한 경로가build, 즉 qt5wrap_ui 명령으로 생성된 파일
ui_mainwindow.h는build에서,slidervelocity에서.h는mainsrc 폴더 아래.
해결 방법:
1) 직접 변경 uimainwindow.h의include 설명
#include "../main_src/slidervelocity.h"
이런 방식은 비교적 어리석고 cmakelists의 형식을 통해 완성하고자 한다.
2) cmakelists에 파일 경로 포함
include_directories(${treebot_SOURCE_DIR}/main_src)

  <span style="color:#be1414;">ui_mainwindow.h</span>           
#include "slidervelocity.h"

3)변경qt5wrap_ii에서 파일을 생성하는 경로입니다. 이 경로를 생성하는slidervelocity입니다.h
  ui_mainwindow.h 파일 위치에서mainsrc, 및
slidervelocity.h는 같은 폴더에 있습니다.

좋은 웹페이지 즐겨찾기