首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cmake-gui将QT 5.5链接到项目

使用cmake-gui将QT 5.5链接到项目
EN

Stack Overflow用户
提问于 2017-12-19 23:45:47
回答 1查看 408关注 0票数 0

我正在尝试构建一个使用Qt5.5库的项目。为了创建CMake文件,我使用cmake-gui并链接到library.By默认设置,该程序将项目链接到QT 4.X的文件和目录,当在QT 5.5中查找相同的文件和目录时,我注意到其中一些文件和目录并不存在。(按照打印)

在这里可以看到有链接到QT 4.X和QT 5.5的文件

尽管您可以构建这些文件,但尝试使用make install命令会显示如下错误。我认为这些错误的发生正是因为缺少由QT 4.X文件替换的QT 5.5归档文件。

这些是我正在尝试解决的错误

现在我开始明白了,一定有一种方法可以将目录链接到丢失的文件,这样就不会再有这种errorsQT了

我试图手动更改包含生成的文件的目录,但这似乎不可行,考虑到错误的数量generated.Is有什么方法可以“替换”这些丢失的文件在Qt5.5版本?

这是用于此项目的CMakeLists.txt文件:

代码语言:javascript
复制
project(PacpusSensors)
cmake_minimum_required(VERSION 2.8)

# ========================================
# PacpusSensors version
# ========================================
set(PacpusSensors_MAJOR_VERSION 0)
set(PacpusSensors_MINOR_VERSION 1)
set(PacpusSensors_PATCH_VERSION 1)
set(PacpusSensors_VERSION
    "${PacpusSensors_MAJOR_VERSION}.${PacpusSensors_MINOR_VERSION}.${PacpusSensors_PATCH_VERSION}")

# ========================================
# Configure CMake 
# ========================================
set(PACPUS_ROOT "/home/marvsdd/PACPUS/export")
if(NOT ${PACPUS_ROOT} STREQUAL "")
    set(CMAKE_MODULE_PATH ${PACPUS_ROOT}/cmake)
    string (REPLACE "\\" "/" CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
    message (STATUS "setting CMAKE_MODULE_PATH to: "  ${CMAKE_MODULE_PATH})
elseif( NOT $ENV{PACPUS_ROOT} STREQUAL "")
    set(PACPUS_ROOT $ENV{PACPUS_ROOT})
    set(CMAKE_MODULE_PATH $ENV{PACPUS_ROOT}/cmake)
    string (REPLACE "\\" "/" CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
    message (STATUS "setting CMAKE_MODULE_PATH to: " ${CMAKE_MODULE_PATH})
    message (STATUS "PACPUS_ROOT is: " ${PACPUS_ROOT})
else()
    message (FATAL_ERROR "Environment variable PACPUS_ROOT not set, please define it in your operating system or pass it as argument to the cmake command")
endif()

include(${CMAKE_MODULE_PATH}/PacpusUtilities.cmake)
include(${CMAKE_MODULE_PATH}/PacpusConfiguration.cmake)
include(${CMAKE_MODULE_PATH}/PacpusDependencies.cmake)
include(${CMAKE_MODULE_PATH}/PacpusPlatforms.cmake)

# ========================================
# Pre-configuration of the compiler
# ========================================
find_package(Pacpus REQUIRED)
# Includes directories
if(PACPUS_FOUND)
include_directories(
  ${PACPUS_DEPENDENCIES_INC}
  ${PACPUS_INCLUDE_DIR}
)
# Compiler flags coming from PacpusDependencies and PacpusPlatforms
add_definitions(${PACPUS_DEFINITIONS})
endif(PACPUS_FOUND)


# ========================================
# Find dependencies
# ========================================
find_package(Qt4 REQUIRED)
if(QT4_FOUND)
    set(QT_USE_QTNETWORK TRUE)
    set(QT_USE_QTOPENGL TRUE)
    set(QT_USE_QTXML TRUE)
    include(${QT_USE_FILE})
    add_definitions( ${QT_DEFINITIONS} )
    add_definitions( -DQT_PLUGIN )
endif(QT4_FOUND)

include_directories(
  ${PACPUS_DEPENDENCIES_INC}
  ${PACPUS_INCLUDE_DIR}
  ${PACPUS_INCLUDE_HINT}
  ${PACPUS_INCLUDE_HINT}/Pacpus
  ./PACPUS/include
)

# ========================================
# Build the PacpusSensors' modules
# ========================================
add_subdirectory(PacpusSocket)
add_subdirectory(Sick)

# ========================================
# Summary
# ========================================
pacpus_info("")
pacpus_info("=====================================================================")
pacpus_info("Configuration for PacpusSensors ${PacpusSensors_VERSION}")
pacpus_info("=====================================================================")
pacpus_info("")
pacpus_info("  Platform:")
pacpus_info("    Host:" ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR})
if(CMAKE_CROSS_COMPILING)
    pacpus_info("    Target:" ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR})
endif()
pacpus_info("    CMake:" ${CMAKE_VERSION})
pacpus_info("    CMake generator:" ${CMAKE_GENERATOR})
pacpus_info("    CMake build tool:" ${CMAKE_BUILD_TOOL})
if(MSVC)
    pacpus_info("    MSVC:" ${MSVC_VERSION})
else()
    pacpus_info("    Configuration:" ${CMAKE_BUILD_TYPE})
endif()
pacpus_info("")
pacpus_info("  Compiler:")
pacpus_info("    C++ Compiler:" ${CMAKE_CXX_COMPILER})
pacpus_info("    C++ flags (release):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE})
pacpus_info("    C++ flags (debug):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG})
pacpus_info("")
pacpus_info("  Pacpus:")
pacpus_info("    PacpusFramework path:" ${PACPUS_ROOT})
pacpus_info("    Log4cxx logging enabled:" ${PACPUS_USE_LOG})
pacpus_info("")
if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
    message(WARNING "The source directory is the same as build directory. \"make clean\" may damage the source tree")
endif()
EN

回答 1

Stack Overflow用户

发布于 2017-12-20 23:49:26

我看到的第一件事是Qt4和Qt5在这里混合在一起。如果两个都安装了也没问题,但请确保使用正确的一个。我猜你想要Qt5吧。

链接到Qt5的一个简单示例如下所示:

代码语言:javascript
复制
find_package(Qt5 REQUIRED Network OpenGL Xml) #Qt5Core is implicit
target_link_libraries(MyApplication Qt5::Network Qt5::OpenGL Qt5::Xml)

您不需要if(Qt5_FOUND),因为包是REQUIRED的,这意味着如果找不到QT,它将失败并显示错误。

在您的CMakeLists.txt中,您没有定义任何目标。通常使用add_executableadd_libraryadd_custom_target cmake函数可以做到这一点。这意味着目标可能是在您的子目录中定义的。在子目录中找到适当的CMakeLists.txt,并在那里使用target_link_libraries命令。此命令将为您添加正确的标头并执行适当的链接。

如果Qt是只包含头的,那么使用全局include_directories()add_definitions()就可以了,但是由于您需要将应用程序链接到Qt,因此您需要在解决方案中更深入地使用target_link_libraries()

有关更多信息,请查看Qt's documentation

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47890513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档