我为VS2012 x64构建了Qt5.1。现在我想用Qt构建一个简单的UI应用程序。不幸的是,CMake给了我一些错误消息:
CMake Error at C:/thirdparty/vs2012/x64/qt-everywhere-opensource-src-5.1.0/qtbase/lib/cmake/Qt5XmlPatterns/Qt5XmlPatternsConfig.cmake:15 (message):
The imported target "Qt5::XmlPatterns" references the file
"C:/thirdparty/vs2012/x64/qt-everywhere-opensource-src-5.1.0/qtbase/include/QtXmlPatterns/5.1.0"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
"C:/thirdparty/vs2012/x64/qt-everywhere-opensource-src-5.1.0/qtbase/lib/cmake/Qt5XmlPatterns/Qt5XmlPatternsConfig.cmake"
but not all the files it references.
Call Stack (most recent call first):
C:/thirdparty/vs2012/x64/qt-everywhere-opensource-src-5.1.0/qtbase/lib/cmake/Qt5XmlPatterns/Qt5XmlPatternsConfig.cmake:58 (_qt5_XmlPatterns_check_file_exists)
CMakeLists.txt:59 (find_package)
同一个项目适用于Qt 5.0.2和Qt 5.0.1。
我设置了Qt5Core_DIR和Qt5Xml_DIR的路径,但它不起作用Qt5XmlPatterns_DIR。查看Qt lib目录时,我看到Qt5XmlPatterns构建成功 - 我也可以使用设计器应用程序。
我使用此说明构建Qt 5.1.0:
目录“C:/thirdparty/vs2012/x64/qt-everywhere-opensource-src-5.1.0/qtbase/include/QtXmlPatterns/5.1.0”不存在。但目录“C:/thirdparty/vs2012/x64/qt-everywhere-opensource-src-5.1.0/qtbase/include/QtXmlPatterns”确实存在。该目录只包含一个文件:“QtXmlPatternsDepends”
任何想法出了什么问题?
更新:我现在使用Qt网站(MS2012 x64)提供的安装程序。下载并安装后,我尝试使用已安装的版本设置项目。它这次工作 - 在构建Qt 5.1.0时可能出现问题 - 但是:似乎CMake配置文件指向错误的目录(“qtbase”而不是“qtxmlpatterns”) - 可能有些东西无法正常工作在Qt5XmlPatternsConfig.cmake文件中......
第二次更新:我从头开始重建Qt5.1 - 但我仍然遇到同样的错误......
第三次更新:我将文件从目录“C:\ thirdparty \ vs2012 \ x64 \ qt-everywhere-opensource-src-5.1.0 \ qtxmlpatterns \ include \ QtXmlPatterns”复制到“ C:\ thirdparty \ vs2012 \ x64 \ qt-everywhere-opensource-src-5.1.0 \ qtxmlpatterns \ include \ QtXmlPatterns“并为QtDeclarative和QtScript做了同样的事情
CMake中的所有错误都消失了 - 但是在编译某些标题时无法找到...
答案 0 :(得分:1)
我正在为vs2012使用Qt5.1的自建版本,我不得不修改每个$ {prefix} / lib / cmake / $ {Qt5LibraryName}文件夹中的Qt5xxx.cmake文件。例如,我不得不修改 来自
的Qt5AxContainer.cmake。 。 。 集(_Qt5AxContainer_OWN_INCLUDE_DIRS) 。
到
。 。 设置(_Qt5AxContainer_OWN_INCLUDE_DIRS “$ {_ qt5Gui_install_prefix} /../ qtactiveqt /包括/” “$ {_ qt5Gui_install_prefix} /../ qtactiveqt /包括/ ActiveQt可” ) 。
我发现_Qt5XXX_OWN_INCLUDE_DIRS用于实际标头的目录路径,并且必须正确添加/修改多个路径。
虽然我还没有将此行为提交给Qt的错误跟踪系统,但它似乎是构建脚本中的错误。