簡體   English   中英

使用 CMake 在 Windows 10 上構建 uWebSockets

[英]Build uWebSockets on Windows 10 with CMake

我想在我的 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 .. 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 有沒有更好的方法? 官方 repo 有一個關於如何在 Windows 上使用它的問題,但我不明白這是如何回答這個問題的。 它僅指向此頁面,其中表示將不正式支持任何特定的構建系統。

任何幫助,將不勝感激。

使用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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM