• VS 2013编译64位版本QT 4.8.6及使用cmake为依赖QT生成VS项目时Could NOT find Qt4


    对于一些已经解决的问题,本博客不再讨论。只将本人遇到的问题做简单的说明。

    一、VS 2013编译64位版本QT 4.8.6

    QT项目官网中,对于QT4,其只提供了windows X86的版本,并且支持VS2010及以下版本。

    捕获

    如果我们的开发环境是VS2010以上版本,使用QT4.8.6-VS2010库来进行开发的话,将会在编译的时候提示缺少msvcpxxx.dll等一系列缺少dll文件的错误,即使我们下载好了MS VC runtime。(以开发环境为VS2013,并使用QT4.8.6-VS2010库来进行开发为例,将会在编译的时候提示缺少msvcp100.dll等一系列缺少dll文件的错误,即使在我们下载并安装好Microsoft Visual C++ 2010 Redistributable Package(x64或x86或SP1 x64或 SP1 x86)之后,可能依然会有报缺少msvcp100.dll等一系列dll的错误)。这时候,就需要对qt源码进行编译了。具体步骤与方法见链接:

    vs2013 编译 x64 qt4.8.6  http://blog.csdn.net/zhuyingqingfen/article/details/48002223

    这个链接所对用的博客中,作者修改了3个文件中共5处地方,有CSDN积分的下载patch文件照着作者的提示操作,没有积分的,依照图片找到这3个文件进行5处修改即可。

    编译完成之后,添加相应的环境变量,参考[QT] QT4环境变量配置,适合初学者

    二、Could NOT find Qt4 (missing: QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE QT_UIC_EXECUTABLE) (found version "4.8.6")

    在很多时候需要利用cmake工具来实现项目的跨平台性,在使用的过程中,本人遇到了这样的问题:

    image

    CMake Error at D:/CMake/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message): 
    Could NOT find Qt4 (missing: QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE 
    QT_UIC_EXECUTABLE) (found version "4.8.6")

     

    也就是说cmake工具找到了qt,但是没找到moc,uic和rcc。本人尝试重启计算机,并期待是因为新增的环境变量没有生效导致的。但结果日然如此。

    解决办法如下:

    找到报错对应的cmakelists.txt,并找到find_package(Qt4 REQUIRED )这条语句。

    如本人遇到问题的文件内容如下:

     1 ADD_SUBDIRECTORY(SfM) 
     2 ADD_SUBDIRECTORY(Localization) 
     3 #ADD_SUBDIRECTORY(opencv)
     4 
     5 IF (OpenMVG_BUILD_OPENGL_EXAMPLES) 
     6   ADD_SUBDIRECTORY(SfMViewer) 
     7 ENDIF (OpenMVG_BUILD_OPENGL_EXAMPLES)
     8 
     9 ADD_SUBDIRECTORY(colorHarmonize)
    10 
    11 find_package(Qt4 REQUIRED )
    12 
    13 if (QT_FOUND) 
    14 ADD_SUBDIRECTORY(ui) 
    15 endif (QT_FOUND)

    使用set命令手动指定moc,uic,rcc文件的路径。修改后的文件内容如下:

     1 ADD_SUBDIRECTORY(SfM) 
     2 ADD_SUBDIRECTORY(Localization) 
     3 #ADD_SUBDIRECTORY(opencv)
     4 
     5 IF (OpenMVG_BUILD_OPENGL_EXAMPLES) 
     6   ADD_SUBDIRECTORY(SfMViewer) 
     7 ENDIF (OpenMVG_BUILD_OPENGL_EXAMPLES)
     8 
     9 ADD_SUBDIRECTORY(colorHarmonize)
    10 
    11 set(QT_MOC_EXECUTABLE D:\qt-everywhere-opensource-src-4.8.6\bin\moc.exe) 
    12 set(QT_RCC_EXECUTABLE D:\qt-everywhere-opensource-src-4.8.6\bin\RCC.exe) 
    13 set(QT_UIC_EXECUTABLE D:\qt-everywhere-opensource-src-4.8.6\bin\Uic.exe)
    14 
    15 find_package(Qt4 REQUIRED )
    16 
    17 if (QT_FOUND) 
    18 ADD_SUBDIRECTORY(ui) 
    19 endif (QT_FOUND) 

    至此,问题得以解决。

  • 相关阅读:
    文件拖放
    有关函数传参的结构赋值的理解
    js_点击弹出图片
    js 比较网址与a链接
    css——鼠标经过按钮时样式(radial-gradient)
    文字跳动
    kafka 数据存储和发送
    kafka 消息存储分析
    Kafka 内存管理类BufferPool
    聊聊kafka-client的源码
  • 原文地址:https://www.cnblogs.com/ashboy/p/5331082.html
Copyright © 2020-2023  润新知