0

我想在我的 C++ 项目中使用uWebSockets (UWS) 通过网络传输图像。该设置将在多个操作系统上运行,因此创建构建文件的最佳方式似乎是使用 CMake。

但是,我是 CMake 的新手,很难构建 UWS。我不明白如何开始在 Windows 10 上使用官方存储库,所以我找到了另一个存储库,其中包含一个CMakeFiles.txt文件和一些依赖项(openssl、zlib、libuv ,但由于某种原因它不包括uSockets )。CMakeFiles.txt包括:

[...] 

find_package(OpenSSL REQUIRED)
find_package(ZLIB REQUIRED)

find_path(LIBUV_INCLUDE_DIR uv.h)
find_library(LIBUV_LIBRARY NAMES uv uv1)

[...] 

它看起来很简单,但是当我尝试运行时mkdir build && cd build; cmake ..,它找不到OpenSSL. 这是它吐出的错误消息:

[...]
[cmake]   Could not find a package configuration file provided by "OpenSSL" with any
[cmake]   of the following names:
[cmake] 
[cmake]     OpenSSLConfig.cmake
[cmake]     openssl-config.cmake
[...]

上面的错误消息表明我需要为每个库设置一个配置文件。但是,如果我正确理解了find_package文档,该命令本身会在根文件夹下的各个位置搜索库。需要什么样的文件夹结构find_package才能工作?

更一般地说,我是否在这个替代回购上浪费时间?有没有更好的方法在 Windows 10 中使用 UWS?官方回购有一个关于如何在 Windows 上使用它的问题,但我不明白这是如何回答这个问题的。它仅指向此页面,其中表示将不正式支持任何特定的构建系统。

任何帮助,将不胜感激。

4

1 回答 1

0

导入依赖项add_subdirectory似乎是解决这个问题的好方法。当我运行 cmake 时,我收到了 LNK2019 错误。我意识到我在网上找到的以下代码片段导致了问题,当我删除它时系统工作。

if(MSVC)
    set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
endif()
于 2019-12-27T00:44:34.290 回答