使用minGW编译基于CMake的项目

时间:2017-04-14 14:39:24

标签: c++ visual-c++ makefile cmake

我想在使用MinGW(MSYS2)编译的Windows项目中使用SignalR。据我所知,我无法链接到使用其他编译器(即VC ++)编译的库(dll)。

因此,我需要使用MinGW编译SignalR。 这里是存储库:

https://github.com/aspnet/SignalR-Client-Cpp

该项目基于CMake而不是标准的Makefile。 这就是我所做的:

尝试按照此处所述编译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编译器,因此输出二进制文件不能与我的应用程序兼容。

我应该如何编译这些库?

2 个答案:

答案 0 :(得分:2)

CMake本身并没有构建任何东西。而是它为make,MSBuild,Ninja等生成配置文件。每个平台都有其默认生成器。对于Windows,即Visual Studio / NMake。

您可以使用CMake’s -G option手动选择生成器。某些生成器名称包含空格。确保在这些引号周围加上引号。

答案 1 :(得分:1)

我不熟悉mingw工具链,但在cygwin中它包含了自己的cmake构建,您可以使用它来为您的库生成构建系统。您正在使用预编译的Windows二进制文件来检测Visual Studio。

如果mingw不包含预构建的cmake,我会下载源代码并在mingw中编译它,然后使用该cmake二进制文件生成SignalR的构建系统。

从:http://www.cmake.org/download/下载 并通过以下方式构建它:

    ./bootstrap
    make      
    make install