Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake Qt5 Debian 8(Jessie)使用Qt5::X11Extras生成错误_Cmake_Debian_Qt5 - Fatal编程技术网

Cmake Qt5 Debian 8(Jessie)使用Qt5::X11Extras生成错误

Cmake Qt5 Debian 8(Jessie)使用Qt5::X11Extras生成错误,cmake,debian,qt5,Cmake,Debian,Qt5,我正在努力解决以下问题,我真的希望有人能给我一些有用的建议 find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras) IF(QT_USE_FILE) INCLUDE(${QT_USE_FILE}) ENDIF(QT_USE_FILE)

我正在努力解决以下问题,我真的希望有人能给我一些有用的建议

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})

在使用CMAD3.3.2构建QT5.8的C++应用程序时,在“生成”步骤中,出现以下错误:

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})
以下是我的CMakeLists中的两行代码,这两行代码引发了问题:

    80 - ADD_DEFINITIONS(-DQT_GUI_LIBS -DQT_CORE_LIB -DQT3_SUPPORT)
    81 - ADD_LIBRARY(ntActions ${ntActionsGUI_SRCS} ${ntActions_GUI}
    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})
我的路径变量包括QT5.8安装路径(lib、lib/CMake、bin、include)。 CMake能够自动找到我正在使用的所有Qt5软件包,包括Qt5X11Extras

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})
我错过什么了吗

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})
我的开发环境。如下所示:Debian 8、Qt(5.8)、CMake(3.8.2)

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})
任何帮助都将不胜感激

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})
谢谢 布巴

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})
添加:qt5Setup.cmake文件

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})

嗨Tsyvarev,谢谢你的反馈。我有一个qt5Setup.cmake文件来设置Qt5,如下所示:

    find_package(Qt5 COMPONENTS Core Widgets Gui Network Concurrent OpenGL 
    Svg PrintSupport Sql SerialPort MultimediaWidgets X11Extras)

    IF(QT_USE_FILE)
      INCLUDE(${QT_USE_FILE})
    ENDIF(QT_USE_FILE)

    include_directories(
    ${Qt5Core_INCLUDE_DIRS}
    ${Qt5Widgets_INCLUDE_DIRS}
    ${Qt5Gui_INCLUDE_DIRS}
    ${Qt5Network_INCLUDE_DIRS}
    ${Qt5OpenGL_INCLUDE_DIRS}
    ${Qt5Svg_INCLUDE_DIRS}
    ${Qt5Concurrent_INCLUDE_DIRS}
    ${Qt5PrintSupport_INCLUDE_DIRS}
    ${Qt5Sql_INCLUDE_DIRS}
    ${QtSerialPort_INCLUDE_DIRS}
    ${Qt5MultimediaWidgets_INCLUDE_DIRS}
    ${Qt5X11Extras_INCLUDE_DIRS})

    LINK_LIBRARIES(
    ${Qt5Svg_LIBRARIES}
    ${Qt5Network_LIBRARIES}
    ${Qt5Widget_LIBRARIES}
    ${Qt5Sql_LIBRARIES}
    ${QtSerialPort_LIBRARIES}
    ${Qt5MultimediaWidgets_LIBRARIES}
    ${Qt5PrintSupport_LIBRARIES}
    ${Qt5X11Extras_LIBRARIES})

对于这种类型的CMake错误消息,引用行有一点意义:问题不在于如何创建库,而在于如何链接库。提供代码的其他部分,包括:
find_-package(Qt5)
call、
target_-link_-libraries(ntActions)
Qt5_-use_-modules(ntActions)
。在配置过程中是否有一些警告,例如?顺便说一句,调用
add_library(ntActions)
创建“ntActionsITK”目标对我来说似乎很奇怪。嗨,Tsyvarev,谢谢你的反馈。我有一个qt5Setup.cmake文件来设置Qt5,如下所示:您能检查在
find_package(Qt5)
之后目标
Qt5::X11Extras
是否实际存在吗?例如,在
find_package()
if(TARGET Qt5::X11Extras)
之后添加这些行,
消息(“TARGET Qt5::X11Extras存在”)
endif()
。哪个
CMakeLists.txt
include()
s脚本
qt5Setup.cmake
?是的,目标存在。CMake按预期检测到它。NTLibMacros.CMake脚本通过以下几行使用上面详述的CMake:(宏(NTLib_USE_QT5)包括(${NTLib_SOURCE_DIR}/CMake/qt5Setup.CMake)ENDMACRO(NTLib_USE_QT5)@boubakeurbelarousi您找到问题的解决方案了吗?我有同样的问题。