使用 CMake 在 Windows 10 上构建 uWebSockets
Build uWebSockets on Windows 10 with CMake
我想在我的 C++ 项目中使用 uWebSockets(UWS) 通过网络传输图像。该设置将在多个操作系统上 运行ning,因此创建构建文件的最佳方式似乎是使用 CMake。
但是,我是 CMake 的新手并且很难构建 UWS。我不明白如何开始使用 Windows 10 上的官方存储库,所以我发现 another repository that includes a CMakeFiles.txt
file and some of the dependencies (openssl, zlib, libuv, but it doesn't include uSockets for some reason). The root 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
docs,该命令本身会在根文件夹下的不同位置搜索库。 find_package
需要什么样的文件夹结构才能工作?
更一般地说,我是在浪费时间使用这个替代存储库吗? Windows 10 使用 UWS 有更好的方法吗?官方回购有 a question about how to use it on Windows but I don't understand how that's an answer to the question. It only points to this page 表示任何特定的构建系统将不被官方支持。
如有任何帮助,我们将不胜感激。
使用 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()
我想在我的 C++ 项目中使用 uWebSockets(UWS) 通过网络传输图像。该设置将在多个操作系统上 运行ning,因此创建构建文件的最佳方式似乎是使用 CMake。
但是,我是 CMake 的新手并且很难构建 UWS。我不明白如何开始使用 Windows 10 上的官方存储库,所以我发现 another repository that includes a CMakeFiles.txt
file and some of the dependencies (openssl, zlib, libuv, but it doesn't include uSockets for some reason). The root 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
docs,该命令本身会在根文件夹下的不同位置搜索库。 find_package
需要什么样的文件夹结构才能工作?
更一般地说,我是在浪费时间使用这个替代存储库吗? Windows 10 使用 UWS 有更好的方法吗?官方回购有 a question about how to use it on Windows but I don't understand how that's an answer to the question. It only points to this page 表示任何特定的构建系统将不被官方支持。
如有任何帮助,我们将不胜感激。
使用 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()