前提
libzmq下载见文章<<C++针对ZeroMQ库的选择>>
确保已安装CMake。如果尚未安装,请从CMake官方网站下载并安装。
使用vscode构建
- 安装CMake Tools扩展
在Visual Studio Code中,转到“Extensions”侧边栏选项卡(或按Ctrl+Shift+X),搜索“CMake Tools”,然后点击“Install”。
- 打开libzmq目录
在Visual Studio Code中,转到“File > Open Folder…”,然后选择libzmq项目文件夹。这将在Visual Studio Code中打开整个项目。
- 配置CMake(重点)
1.打开Visual Studio Code的设置:转到“File > Preferences > Settings”(或按Ctrl+,)。
2.在设置中(推荐在工作区设置,在用户区设置的话会影响到其他工程) 搜索“CMake Tools”,然后找到“configuration Settings”。点击在settings.json中编辑,这会打开/创建一个名为settings.json
的文件。
3.在settings.json
文件中,添加以下行来指定默认构建系统:"cmake.generator": "Visual Studio 16 2019" //对于Visual Studio 2017,使用"Visual Studio 15 2017"。
ps: 这里我原本使用
Ninja
生成器的,因为Ninja
生成器是通用的可以用MinGW和MSVC编译器,但是CMake报错了。看错误信息好像是生成冲突了,改为Visual Studio 16 2019
就没问题…没办法,忍痛用Visual Studio 16 2019
。
使用Ninja
生成器后的CMake报错信息:[CMake] CMake Error: [CMake] Running [CMake] [CMake] 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe' '-C' 'F:/project/ZeroMQ/libzmq/out/build/x64-Release' '-t' 'recompact' [CMake] [CMake] failed with: [CMake] [CMake] ninja: error: build.ninja:1253: multiple rules generate precompiled.hpp [-w dupbuild=err]
- CMake
保存
settings.json
文件,然后开始配置CMake一下。这将根据您选择的配置生成构建文件。
- 构建
CMake之后,开始构建,点击Bulid。最好选择install (注意有个坑!)
一开始install的时候老是报错:
[byild] CMake Error at cmake_install.cmake:36 (file):
[build] file cannot create directory:
[build] f:/project/ZeroMQ/libzmq/install/lib/pkgconfig. Maybe need administrative
[build] privileges.
[build]
[build]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: 命令“setlocal [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -DBUILD_TYPE=Release -P cmake_install.cmake [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: :cmEnd [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: :cmErrorLevel [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: exit /b %1 [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: :cmDone [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: :VCEnd”已退出,代码为 1。 [F:\project\ZeroMQ\libzmq\build\install.vcxproj]
[proc] The command: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" --build f:/project/ZeroMQ/libzmq/build --config Release --target install -j 6 -- exited with code: 1
后面发现是libzmq目录下有个
INSTALL
文件,和要创建的install
目录重名是无法创建的导致编译一直报错,只要把INSTALL
文件重命名或者加一个后缀就可以了
6.输出
使用Visual Studio 构建
这里以vs2019为例,其他的都差不多。
-
打开Visual Studio 2019,单击“继续而不使用代码”以打开主窗口。
-
从菜单中选择 “文件” -> “打开” -> “CMake…”。
-
浏览到
libzmq
源代码目录并选择CMakeLists.txt
文件,然后单击“打开”。然后CMake构建。 -
如果构建失败。可能是因为配置问题。参考VSCode修改生成器与编译器重新尝试。