【问题标题】:Build zeromq on Windows 10 with CMake使用 CMake 在 Windows 10 上构建 zeromq
【发布时间】:2018-08-28 11:17:51
【问题描述】:

过去我曾使用 Visual Studio 解决方案文件在 Windows 上构建 zeromq (libzmq)。我刚刚注意到 Visual Studio 解决方案一直是deprecated,因为它们太难维护了。

替代方法是使用CMake;问题是我没有如何以这种方式调用构建的经验。有人可以一步一步地演示必要的命令吗?

我想使用 libsodium 实现 32 位和 64 位 libzmq 二进制文件,并在 Windows 10 上使用 VS2015 编译。(我已经安装了 CMake 64 位并允许它在安装时添加到系统路径中。)

谢谢

【问题讨论】:

  • 您查阅过INSTALL项目的文件吗?它的“Windows Builds”部分描述了在 Windows 10 上为 VS2015 构建项目。
  • 我确实看到了,但还不够清楚,无法让我开始。以前从未使用过 CMake,我是使用 GUI 还是在命令行上?如何指定构建 32/64 位、使用 libsodium 等。
  • 命令cmake -H ... 用于命令行。但是您可以从 CMake GUI 构建项目,它的一般用法在很多地方都有描述(简而言之:1. 选择源和构建目录。2. 选择合适的生成器。3. 按“配置”。4. 可能调整选项并按再次“配置”)。通过使用适当的生成器“Visual Studio 14 2015”或“Visual Studio 14 2015 Win64”来实现在 32 位和 64 位库之间进行选择。
  • 至于使用libsodium,应该在项目文档的某处进行描述。在CMakeLists.txt 中,我找到了option (WITH_LIBSODIUM "Use libsodium instead of built-in tweetnacl" OFF) 行,这可能是您想要的:在CMake GUI 中,您需要检查“WITH_LIBSODIUM”选项。

标签: cmake windows-10 zeromq libsodium


【解决方案1】:

所以最终我设法使用CMake 从源代码在Windows 10 上构建zeromq

CMake用于设置各种zeromq项目选项;在这种情况下,使用libsodium 库进行加密并为构建提供必要的includelinker 路径。配置选项后,CMake 将用于生成 Visual Studio 解决方案,从中构建 libzmq 二进制文件。

简而言之,这就是我使用 CMake GUI 的方式:

  1. 指定克隆 libzmq 源代码的位置,并告诉 CMake 在哪里构建二进制文件。暗示;根据需要为每个 Visual Studio 版本和 32/64 位创建一个单独的文件夹,请参见下面的屏幕截图。

  2. 单击配置以加载项目选项。从弹出窗口中,从列表中选择您希望使用的编译器。设置必要的项目选项并再次单击配置。

  3. 如果一切顺利,请单击“生成”以创建 Visual Studio 文件。

  4. 点击打开项目;在 Visual Studio 中加载后,根据需要选择 Debug/Release,然后单击 Build Solution。

  5. 对其他架构重复该过程,例如。根据需要选择 32 位编译器。请记住调整构建输出位置和 libsodium linker 路径以反映该架构。

截图:

【讨论】:

  • 我赞成这个答案,因为它反映了我为构建库所做的工作。但是,我不得不禁用 libsodium 和 TLS,因为我无法以 cmake 找到的方式安装这些软件包。对这一点进行更深入的解释将不胜感激。
【解决方案2】:
  1. VS2015工具栏->打开->CMake->ZMQ文件夹

  2. 工具栏 -> CMake -> 缓存 -> 生成 -> ZeroMQ

  3. 工具栏 -> CMake -> 安装 -> ZeroMQ

您可以在以下位置找到构建 /Users/UserName/CMakeBuilds/...

【讨论】:

  • 试过了,但 Visual Studio 2017 的 CMake 解析似乎不能胜任这项任务。根据下面的答案,切换到独立的 CMake 安装程序并生成了一个 vs2017 sln,它可以正常工作。
  • 我也是。我尝试使用 Visual Studio 2019。当您在 Visual Studio 中通过 git clone 创建新项目时,它会立即打开 Visual Studio 的 CMake 程序。 CMake Error: failed with: ninja: error: build.ninja:1253: multiple rules generate precompiled.hpp [-w dupbuild=err]CMake Generate step failed. Build files cannot be regenerated correctly. 但很高兴知道 CMake 是内置在其中的......谢谢。
  • 如果它对任何人有帮助 - 以下是 zmq 的 CMakeLists.txt “问题是,libzmq-static libzmq 都尝试同时使用/生成 #precompiled.pch 添加依赖项,因此它们按顺序运行,因此它们不会相互干扰 TODO # 仍然会生成警告“build\x64-Debug\ninja:警告:多个规则生成 precompiled.hpp。涉及 # 这个目标的构建将不正确;仍然继续 [-w dupbuild=warn]" 我能够通过在文件中稍微修改一下以删除对 BUILD_STATIC 的引用来解决它,以免发生冲突
猜你喜欢
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 2018-03-15
  • 2021-11-15
  • 2021-11-27
  • 2021-10-02
相关资源
最近更新 更多