• 【踩坑汇总】CLion开启QT编程


    一下全部内容全都是大佬lht的经验,我只是记录一下给大家。

    问题:Qt5Config.cmake找不到

    解决办法:

    set(CMAKE_PREFIX_PATH "E:/Qt/Qt5.12.11/5.12.11/mingw73_64/lib/cmake/Qt5")

    找到Qt5Config.cmake路径,添加上面这句

    或者

    -D CMAKE_PREFIX_PATH = "******"

     在红线区域加上上面那句话,空格可以忽略

     

    问题:ui的头文件找不到

    解决办法:

    设生成的目标为 Test ,在 CMakeLists.txt 文件的最后一行添加:

    target_include_directories(Test PRIVATE "${CMAKE_BINARY_DIR}/Test_autogen/include")#Test_autogen文件夹名字注意

    问题:首次运行QT0xC0000135错误

    解决办法:

    编译成功后无法运行缺依赖,学官网加环境变量是最好的

    编译完成后,在qt里找到windeployqt.exe 运行

    1. windeployqt.exe xxxx.exe
    2. #XXXX.exe就是你编译后的exe

    它会把依赖文件复制到编译文件夹内,然后再运行。上述步骤只需要进行一次,除非你引用了新的库

    问题:编译到链接库阶段报错moc_mainwindow.cpp:99: undefined reference to ‘__imp__

    1. CMakeFiles\QTPlayer.dir/objects.a(mainwindow.cpp.obj): In function `MainWindow::MainWindow(QWidget*)':
    2. E:/GitProject/QTPlayer/mainwindow.cpp:7: undefined reference to `__imp__ZN10QWebSocketC1ERK7QStringN18QWebSocketProtocol7VersionEP7QObject'
    3. E:/GitProject/QTPlayer/mainwindow.cpp:7: undefined reference to `__imp__ZN10QWebSocketD1Ev'
    4. CMakeFiles\QTPlayer.dir/objects.a(mainwindow.cpp.obj): In function `MainWindow::connectServer()':
    5. E:/GitProject/QTPlayer/mainwindow.cpp:16: undefined reference to `__imp__ZN10QWebSocket9connectedEv'
    6. E:/GitProject/QTPlayer/mainwindow.cpp:18: undefined reference to `__imp__ZN10QWebSocket4openERK4QUrl'
    7. CMakeFiles\QTPlayer.dir/objects.a(mainwindow.cpp.obj): In function `MainWindow::onConnected()':
    8. E:/GitProject/QTPlayer/mainwindow.cpp:23: undefined reference to `__imp__ZN10QWebSocket15sendTextMessageERK7QString'
    9. CMakeFiles\QTPlayer.dir/objects.a(mainwindow.cpp.obj): In function `MainWindow::~MainWindow()':
    10. E:/GitProject/QTPlayer/mainwindow.cpp:36: undefined reference to `__imp__ZN10QWebSocketD1Ev'

    解决办法:

    三类问题,

    第一是在头文件声明的函数没写定义(网上说的)
    (我不是这个问题,而且我觉得这不会导致编译直接过不了)
    第二个是编译链同时装了msvc和mingw的库,混合编译了。解决方案见最后
    https://stackoverflow.com/questions/39063110/lots-of-undefined-reference-in-qt-creator
    第三种问题和用了websocket等插件类(它官网是这么描述的)的类功能,需要进行如下修改

    1. find_package(QT NAMES Qt6 Qt5 COMPONENTS WebSockets Widgets REQUIRED)
    2. target_link_libraries(QTPlayer PRIVATE Qt5::Widgets Qt5::WebSockets)

    这类似于qt的pro文件里的

    QT+=WebSockets


    新发现一种情况,在qtcreator可以编译clion却不行,原因是多套qt,没有用正确的qt
    解决方案是

    1. -DCMAKE_BUILD_TYPE:STRING=Debug
    2. -DCMAKE_C_COMPILER:STRING=D:/Qt/Qt5.12.11/Tools/mingw730_64/bin/gcc.exe
    3. -DCMAKE_GNUtoMS:BOOL=OFF
    4. -DCMAKE_INSTALL_PREFIX:PATH=C:/Program
    5. Files
    6. (x86)/XiaoZhi
    7. -DCMAKE_PREFIX_PATH:STRING=D:/Qt/Qt5.12.11/5.12.11/mingw73_64
    8. -DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=D:/Qt/Qt5.12.11/Tools/QtCreator/share/qtcreator/package-manager/auto-setup.cmake
    9. -DQT_DIR:PATH=D:/Qt/Qt5.12.11/5.12.11/mingw73_64/lib/cmake/Qt5
    10. -DQT_QMAKE_EXECUTABLE:STRING=D:/Qt/Qt5.12.11/5.12.11/mingw73_64/bin/qmake.exe
    11. -DQt5Core_DIR:PATH=D:/Qt/Qt5.12.11/5.12.11/mingw73_64/lib/cmake/Qt5Core
    12. -DQt5Gui_DIR:PATH=D:/Qt/Qt5.12.11/5.12.11/mingw73_64/lib/cmake/Qt5Gui
    13. -DQt5Widgets_DIR:PATH=D:/Qt/Qt5.12.11/5.12.11/mingw73_64/lib/cmake/Qt5Widgets
    14. -DQt5_DIR:PATH=D:/Qt/Qt5.12.11/5.12.11/mingw73_64/lib/cmake/Qt5


    复制于qtcreator

    问题:Error copying file "******" to "*******"

    解决办法:

    删除CMakelist文件最后面的

    add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${QT_INSTALL_PATH}/bin/Qt5${QT_LIB}${DEBUG_SUFFIX}.dll" "$")

  • 相关阅读:
    基于STM32的ADC采样序列频谱分析
    JAVA经典百题之按位与运算符 `&`的使用
    数仓4.0(三)------数据仓库系统(续)
    SPI通信
    性能测试常见分类
    【GIT版本控制】--高级分支策略
    典型数据结构-图,图的存储、基本操作和遍历
    swift 约束布局
    欧拉角与旋转矩阵
    并查集理解与应用(详细版)
  • 原文地址:https://blog.csdn.net/weever7/article/details/128086245