c++ - Qt Creator vcpkg 集成
问题描述
我正在尝试遵循本指南,以便在 Windows 10 上将 vcpkg 与 Qt Creator 集成:
https
://www.qt.io/blog/qt-creator-cmake-package-manager-auto-setup
目标是在 Qt Creator 项目中使用来自 vcpkg 的库。
不幸的是find_package
不起作用。有了这个 CMakeLists.txt:
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”]}
我auto-setup.cmake
在 Qt Creator 的项目树中。最后几行与 vcpkg 相关:
#
# 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
triplet。
Qt creator 中的套件使用 Microsoft Visual C++ 编译器 (AMD64)
编辑: 更改这些参数,示例https://www.qt.io/blog/qt-creator-cmake-package-manager-auto-setup似乎有效: Qt Creator Screenshot
解决方案
推荐阅读
- java - Jdbctemplate queryforObject .IncorrectResultSizeDataAccessException:不正确的结果大小:预期 1,实际 10
- c# - 如何在没有正确索引的情况下发送数组/列表的表单值?
- xml - 如何在xslt中处理不同的相同节点
- python - 通过自定义聚合功能提高 pandas groupby 的效率
- asp.net - 如何从链接的 DLL 中引用 Request 对象?
- javascript - 解码(循环)直到字符串 URI 相同
- matlab - matlab中的二维离散傅里叶变换和逆DFT
- javascript - 为什么 Array.from(FileList) 会丢失所有元数据
- google-analytics - 全局网站代码 (gtag) 不发送任何内容
- ios - 如何将 Vimeo 360 视频从 url 播放到我的应用程序?