【发布时间】:2017-09-10 20:12:45
【问题描述】:
我想在使用 MinGW (MSYS2) 编译的 Windows 项目中使用 SignalR。据我所知,我无法链接到用另一个编译器(即 VC++)编译的库(dll)。
因此,我需要用 MinGW 编译 SignalR。 这里是存储库:
https://github.com/aspnet/SignalR-Client-Cpp
该项目基于 CMake 而不是标准的 Makefile。 这就是我所做的:
- 下载的CMake:https://cmake.org/files/v3.8/cmake-3.8.0-win32-x86.zip
- 解压到一个文件夹(即 C:/dev)
- 将 cmake/bin 文件夹导出到 PATH var(在 /etc/profile 中)
- 用 cmake --version 检查它是否工作:)
- 克隆了 Cpp Rest SDK (https://github.com/Microsoft/cpprestsdk.git)
尝试按照此处所述编译 Cpp Rest SDK:
https://github.com/Microsoft/cpprestsdk/wiki/How-to-build-for-Linux
导致这个输出:
$ cmake .. -DCMAKE_BUILD_TYPE=发布 -- 为:Visual Studio 15 2017 构建 -- C 编译器标识为 MSVC 19.10.25019.0 -- CXX 编译器标识为 MSVC 19.10.25019.0 -- 检查工作的 C 编译器:C:/Program Files/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.10.25017/bin/HostX86/x86/cl.exe -- 检查工作的 C 编译器:C:/Program Files/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.10.25017/bin/HostX86/x86/cl.exe -- 有效
恐怕它仍在使用 MSVC 编译器,因此输出二进制文件与我的应用程序不兼容。
我应该如何编译这些库?
【问题讨论】:
-
cmake 具有 CC 和 CXX 环境变量(至少在 linux 上)。你应该把这些改成你的mingw。也应该有允许这样做的命令行标志。否则请参阅
ccmake(同样在 linux 中,但也可能在 windows 中),它允许您更改许多变量和标志等。必要时进入高级模式
标签: c++ visual-c++ makefile cmake