首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt Creator vcpkg集成

Qt Creator vcpkg集成
EN

Stack Overflow用户
提问于 2021-11-10 16:34:11
回答 1查看 1.5K关注 0票数 0

为了在Windows 10上集成vcpkg和Qt,我尝试遵循这个指南:

https://www.qt.io/blog/qt-creator-cmake-package-manager-auto-setup

目标是在Qt项目中使用来自vcpkg的lib。

不幸的是,find_package无法工作。使用此CMakeLists.txt:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.5)

project(TESTvcpkg LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(TESTvcpkg main.cpp)


find_package(wt REQUIRED)
target_link_libraries(TESTvcpkg PRIVATE wt::wt)

我知道这个错误:

8: error: Target "TESTvcpkg" links to target "wt::wt" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing?

如果我从命令提示符运行vcpkg list,就会得到预期的列表。所以环境变量应该没问题。

指南谈到了vcpkg.json文件,但我不清楚我必须把它放在哪里;我把它放在项目文件夹中:

{“名称”:"TESTvcpkg",“版本-字符串”:"0.0.1",“依赖关系”:"wt“}

我在Qt的项目树中有auto-setup.cmake。最后一行与vcpkg相关:

代码语言:javascript
复制
#
# vcpkg
#
macro(qtc_auto_setup_vcpkg)
  if (EXISTS "${CMAKE_SOURCE_DIR}/vcpkg.json" AND NOT QT_CREATOR_SKIP_VCPKG_SETUP)
    option(QT_CREATOR_SKIP_VCPKG_SETUP "Skip Qt Creator's vcpkg package manager auto-setup" OFF)

    find_program(vcpkg_program vcpkg)
    if (NOT vcpkg_program)
      message(WARNING "Qt Creator: vcpkg executable not found. "
                      "Package manager auto-setup will be skipped. "
                      "To disable this warning set QT_CREATOR_SKIP_VCPKG_SETUP to ON.")
      return()
    endif()
    get_filename_component(vpkg_root ${vcpkg_program} DIRECTORY)

    if (NOT EXISTS "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake")
      message(STATUS "Qt Creator: vcpkg package manager auto-setup. "
                     "Skip this step by setting QT_CREATOR_SKIP_VCPKG_SETUP to ON.")

      file(WRITE "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" "
        set(CMAKE_C_COMPILER \"${CMAKE_C_COMPILER}\")
        set(CMAKE_CXX_COMPILER \"${CMAKE_CXX_COMPILER}\")
        ")
      if (CMAKE_TOOLCHAIN_FILE AND NOT
          CMAKE_TOOLCHAIN_FILE STREQUAL "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake")
        file(APPEND "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake"
          "include(\"${CMAKE_TOOLCHAIN_FILE}\")\n")
      endif()

      if (VCPKG_TARGET_TRIPLET)
        set(vcpkg_triplet ${VCPKG_TARGET_TRIPLET})
      else()
        if (WIN32)
          set(vcpkg_triplet x64-mingw-static)
          if (CMAKE_CXX_COMPILER MATCHES "cl.exe")
            set(vcpkg_triplet x64-windows)
          endif()
        elseif(APPLE)
          set(vcpkg_triplet x64-osx)
        else()
          set(vcpkg_triplet x64-linux)
        endif()
      endif()

      file(APPEND "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" "
        set(VCPKG_TARGET_TRIPLET ${vcpkg_triplet})
        include(\"${vpkg_root}/scripts/buildsystems/vcpkg.cmake\")
      ")
    endif()

    set(CMAKE_TOOLCHAIN_FILE "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" CACHE PATH "" FORCE)
  endif()
endmacro()
qtc_auto_setup_vcpkg()

有什么需要我改变的吗?

为了获得Wt,我使用了:vcpkg install wt:x64-windows三重奏。

Qt创建者中的工具包使用Microsoft Visual C++编译器(AMD64)。

编辑:更改这些参数,示例https://www.qt.io/blog/qt-creator-cmake-package-manager-auto-setup似乎有效:Qt造物主截图

EN

回答 1

Stack Overflow用户

发布于 2021-11-10 20:25:54

该项目在其CMakeLists.txt之一中定义目标wt (参见这里)。在这个文件的后面,它将名称空间前缀定义Wt::。所以要链接的目标是Wt::wt。在target_link_libraries命令中引用目标时,Case很重要。

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

https://stackoverflow.com/questions/69916940

复制
相关文章

相似问题

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