使用 vcpkg 和 cmake 运行 uWebsockets 示例时出现问题

Issue running uWebsockets examples using vcpkg and cmake

提问人:afp_2008 提问时间:10/28/2023 最后编辑:afp_2008 更新时间:10/28/2023 访问量:55

问:

我想使用 vcpkg 清单模式构建 uWebsockets C++ 库的 EchoServer.cpp 示例。

my-app
│   CMakeLists.txt
│   vcpkg.json
│
└───examples
        CMakeLists.txt
        EchoServer.cpp
        

vcpkg.json内容

{
  "name": "myfirst",
  "version-string": "1.0.0",
  "dependencies": [
    "uwebsockets"
  ]
}

CMakeLists的内容.txt

cmake_minimum_required(VERSION 3.24)
project(my-app VERSION 1.0.0)

set(CMAKE_CXX_STANDARD 20)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

find_path(UWEBSOCKETS_INCLUDE_DIRS "uwebsockets/App.h")

add_subdirectory(examples)

示例\CMakeLists.txt 的内容

cmake_minimum_required(VERSION 3.24)
project(projExamples VERSION 1.0.0)

set(CMAKE_CXX_STANDARD 20)

add_executable(EchoServerExample EchoServer.cpp)
target_include_directories(EchoServerExample PRIVATE ${UWEBSOCKETS_INCLUDE_DIRS})

工具链已通过 正确地传递到我的 CLion IDE。当我配置我的项目时,vcpkg 可以正常工作,并安装并打印以下消息:"DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake"uWebsockets

...
The following packages will be built and installed:
  * libuv[core]:x64-windows -> 1.46.0
  * usockets[core]:x64-windows -> 0.8.6#1
    uwebsockets[core]:x64-windows -> 20.45.0
  * vcpkg-cmake[core]:x64-windows -> 2023-05-04
  * vcpkg-cmake-config[core]:x64-windows -> 2022-02-06#1
  * zlib[core]:x64-windows -> 1.2.13
...
find_path(UWEBSOCKETS_INCLUDE_DIRS "uwebsockets/App.h")
target_include_directories(main PRIVATE ${UWEBSOCKETS_INCLUDE_DIRS})

我不知道我应该如何在 in example 子目录中使用。因此,我在运行 .在我看来,它无法找到 : , , .uWebsocketsCMakeLists.txt EchoServerExample.exeuWebsocketszlibuvuSockets

LINK : fatal error LNK1104: cannot open file 'uv.lib'

这是使用集成到我的项目目录中的正确方法吗?有人可以帮忙吗?提前致谢。uWebsocketsvcpkg.json

C++ cmake 清单 vcpkg

评论

1赞 Alan Birtles 10/28/2023
您可能最好使用然后链接到生成的目标,这应该 learn.microsoft.com/en-us/vcpkg/users/buildsystems/ 为您配置所有内容......find_package
0赞 afp_2008 10/28/2023
它可以找到 zlib with,但失败了。find_package(zlib REQUIRED)find_package(uv REQUIRED)
1赞 Alan Birtles 10/28/2023
您不需要做任何事情,只需找到并链接到它,它就会自动引入依赖项uWebsockets
0赞 afp_2008 10/28/2023
它对我不起作用。 给我find_package(uWebsockets REQUIRED)Could not find a package configuration file provided by "uWebsockets" with any of the following names: uWebsocketsConfig.cmake uwebsockets-config.cmake
0赞 Alan Birtles 10/28/2023
您是否将 vcpkg 工具链传递给 cmake?

答: 暂无答案