7

我需要用 MinGW 编译 poco,以便我可以在 Qt Creator 中使用它,但不知道如何使用,我已经设法在 Visual Studio 中编译 poco,但我无法在 Qt Creator 中使用这些库。

4

5 回答 5

9

在这种环境下:

  • MinGW (GCC 4.7.0) + MSYS
  • Poco 1.4.6(2013 年 2 月 5 日下载)

这就是我为 MinGW 和 Windows 7 配置和编译 Poco 的方式:

  1. 将 Poco 解压缩到您选择的文件夹中。C:/ 对于这个例子。
  2. 应用下一条路径以避免复制签名错误。(来自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
    }
    
  3. 在 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选项。

  4. 在没有演示、SSL、密码学和 ODBC 支持的情况下编译 Poco:

    $ ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --prefix=./_INSTALL
    $ make clean
    $ make -j4 -nodemos
    $ make install
    

祝你好运!

于 2013-02-01T13:25:34.663 回答
3

使用 MinGW 构建 POCO 应该没什么大不了的,它在过去已经完成,但核心开发人员没有动力(不是我们的“痒”),也没有人抱怨拥有和维护 MinGW 构建;我们非常欢迎有人担任这个角色。有兴趣的可以联系我。

于 2013-02-04T04:50:59.367 回答
3

补充 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}

希望这可以帮助。

于 2013-02-09T20:12:58.103 回答
3

有一个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 来到这里)
于 2019-05-06T12:23:54.160 回答
0

可能有如下错误:

剥离:'/Learn/POCO/poco-1.4.6p2/lib/MinGW/ia32/libPocoFoundation.dll.exe':没有这样的文件

我们可以通过更改文件“build\rules\global”中的行来解决问题

STRIPCMD = $(STRIP) $@$(BINEXT) 

STRIPCMD = $(STRIP) $@$
于 2013-11-16T03:22:42.263 回答