2017-04-14 78 views
0

我想在使用MinGW(MSYS2)編譯的Windows項目中使用SignalR。據我所知,我不能鏈接到與另一個編譯器(即VC++)編譯的庫(dll)。使用minGW編譯基於CMake的項目

因此,我需要用MinGW編譯SignalR。 這裏庫:

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

該項目是基於CMake的,而不是一個標準的Makefile。 這是我做過什麼:

試着這裏描述克至編譯CPP的休息SDK:

https://github.com/Microsoft/cpprestsdk/wiki/How-to-build-for-Linux

導致這個輸出:

$ cmake的.. -DCMAKE_BUILD_TYPE =釋放 - 建設爲:Visual Studio的2017年15 - 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編譯器,所以輸出二進制文件將與我的應用程序不兼容。

我該如何編譯這些庫?

+0

cmake的有CC和CXX環境變​​量(至少在Linux上)。你應該把這些改成你的名字。應該有命令行標誌允許這個。否則請參閱'ccmake'(再次在Linux中,但也可能在Windows中),它允許您更改許多變量和標誌等等。必要時進入高級模式 –

回答

2

CMake本身不會構建任何東西。相反,它會爲make,MSBuild,Ninja等生成配置文件。每個平臺都有其默認生成器。對於Windows,即Visual Studio/NMake。

您可以使用CMake’s -G option手動選擇發電機。一些生成器名稱包含空格。一定要把這些引號加上。

1

我不熟悉mingw工具鏈,但在cygwin中它包含了它自己的cmake構建,您可以使用它構建您的庫的構建系統。您正在使用預編譯的Windows二進制文件來檢測Visual Studio。

如果mingw不包含預構建的cmake,我會下載源代碼並在mingw中進行編譯,然後使用該cmake二進制生成SignalR的構建系統。

從下載:http://www.cmake.org/download/ 並通過構建它:

./bootstrap 
    make  
    make install