我需要用 MinGW 编译 poco,以便我可以在 Qt Creator 中使用它,但不知道如何使用,我已经设法在 Visual Studio 中编译 poco,但我无法在 Qt Creator 中使用这些库。
5 回答
在这种环境下:
- MinGW (GCC 4.7.0) + MSYS
- Poco 1.4.6(2013 年 2 月 5 日下载)
这就是我为 MinGW 和 Windows 7 配置和编译 Poco 的方式:
- 将 Poco 解压缩到您选择的文件夹中。C:/ 对于这个例子。
应用下一条路径以避免复制签名错误。(来自https://github.com/pocoproject/poco/issues/57)。
在文件 C:\poco-1.4.6\Foundation\include\Poco\FPEnvironment_DUMMY.h
在此方法中删除字符串std:::
inline float FPEnvironmentImpl::copySignImpl(float target, float source) { #if defined(__APPLE__) || defined(POCO_ANDROID) return copysignf(target, source); #else return /*std::*/copysignf(target, source); #endif }
这里也是:
inline double FPEnvironmentImpl::copySignImpl(double target, double source) { #if defined(__APPLE__) || defined(POCO_ANDROID) return copysign(target, source); #else return /*std::*/copysign(target, source); #endif }
在 C:\poco-1.4.6\build\config\MinGW 修改 MinGW 配置。(来自http://cidebycide.blogspot.com.es/2012/06/building-poco-c-witn-mingw.html)
您应该删除-mno-cygwin字符串:
SHLIB = $(CXX) -shared -mno-cygwin -o $@ -Wl,--out-implib=$(dir $@)$(subst cyg,lib,$(basename $(notdir $@))).a
和
SYSFLAGS = -mno-cygwin -D_WIN32 -DMINGW32 -DWINVER=0x500 -DPOCO_NO_FPENVIRONMENT -DPCRE_STATIC -DPOCO_THREAD_STACK_SIZE -DFoundation_Config_INCLUDED -I/usr/local/include -I/usr/include
如果您不需要使用密码学和 SSL,则应删除 SYSLIBS 行中的-lssl和-lcrypto选项。
在没有演示、SSL、密码学和 ODBC 支持的情况下编译 Poco:
$ ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --prefix=./_INSTALL $ make clean $ make -j4 -nodemos $ make install
祝你好运!
使用 MinGW 构建 POCO 应该没什么大不了的,它在过去已经完成,但核心开发人员没有动力(不是我们的“痒”),也没有人抱怨拥有和维护 MinGW 构建;我们非常欢迎有人担任这个角色。有兴趣的可以联系我。
补充 Cesar 的答案(在这里,为了格式化,而不是添加评论),您需要在 .pro 文件中使用类似的内容:
INCLUDEPATH += "<path_to_poco_include_dir>"
LIBS += -L"<path_to_poco_lib_dir>" -l<poco_lib> -l<poco_lib>
例如,在我的情况下,我会有这个(用于调试版本):
INCLUDEPATH += "C:/Dev/lib/poco/poco143/Debug/include"
LIBS += -L"C:/Dev/lib/poco/poco143/lib" -lPocoFoundationd -lPocoUtild
然后,您可以通过为调试和发布版本创建设置来细化这一点:
LIB_HOME = "C:/Dev/lib/"
POCO_HOME = $${LIB_HOME}poco/poco143/
# SEE http://www.qtcentre.org/threads/23655-Does-Qt-Creator-understand-debug-release-scopes-in-pro-files
# OR http://www.qtcentre.org/threads/30430-How-to-set-pro-file-about-debug-and-release
####
CONFIG(debug, debug|release) {
CONFIG -= debug release
CONFIG += debug
}
CONFIG(release, debug|release) {
CONFIG -= debug release
CONFIG += release
}
####
debug {
POCO_DEBUG = d
POCO_PATH = $${POCO_HOME}Debug
}
release {
POCO_DEBUG =
POCO_PATH = $${POCO_HOME}Release
}
INCLUDEPATH += "$${POCO_PATH}/include"
LIBS += -L"$${POCO_PATH}/lib" -lPocoFoundation$${POCO_DEBUG} -lPocoUtil$${POCO_DEBUG}
希望这可以帮助。
有一个MSYS2 包提供安装当前(在撰写本文时)POCO C++ 库 1.9.0 所需的一切。
- 要安装这个包,首先需要从 msys2.org 下载并安装MSYS2
- 使用
pacman
(他们集成了 Arch Linux 包管理器的一个端口),您可以识别您要安装的 POCO C++ 包:为pacman -Ss poco
您提供一个包列表,其中poco是名称的一部分。这可能如下所示:
$ pacman -Ss poco
mingw32/mingw-w64-i686-poco 1.9.0-1
POrtable COmponents C++ Libraries (mingw-w64)
mingw64/mingw-w64-x86_64-poco 1.9.0-1
POrtable COmponents C++ Libraries (mingw-w64)
- 我想安装名为的 64 位软件包
mingw64/mingw-w64-x86_64-poco
,因此使用 pacman 来安装它:
$ pacman -S mingw64/mingw-w64-x86_64-poco
但是,这会安装 POCO C++ 的预构建动态版本。在我的系统上,库位于 msys2 的安装目录中
C:\msys64\mingw64\bin
(DLL 来到这里)C:\msys64\mingw64\lib
(.a 来到这里)
可能有如下错误:
剥离:'/Learn/POCO/poco-1.4.6p2/lib/MinGW/ia32/libPocoFoundation.dll.exe':没有这样的文件
我们可以通过更改文件“build\rules\global”中的行来解决问题
STRIPCMD = $(STRIP) $@$(BINEXT)
到
STRIPCMD = $(STRIP) $@$