使用MinGW在Windows编译波科(Compile Poco with MinGW on Win

2019-07-19 02:14发布

我需要编译POCO使用MinGW,所以我可以在Qt Creator中使用它,但无法弄清楚如何,我已经成功地编译在Visual Studio POCO,但我不能使用Qt Creator中那些库。

Answer 1:

补充塞萨尔的回答(在这里,而不是添加注释,用于格式化),你需要这样的事情在你的.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}

希望这可以帮助。



Answer 2:

有了这个环境:

  • MinGW的(GCC 4.7.0)+ MSYS
  • 波科1.4.6(下载5 febrery 2013)

这是我如何配置和编译波科(MinGW版本)和Windows 7:

  1. 提取波科到您选择的文件夹。 C:/这个例子。
  2. 应用下一个路径,以避免复制符号错误。(从https://github.com/pocoproject/poco/issues/57 )。

    在文件C:\ POCO-1.​​4.6 \基金会\包括\波科\ 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. 修改MinGW的配置在C:\ POCO-1.​​4.6 \ build中\设置\ 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,您应该删除的选项-lssl,并在SYSLIBS线-lcrypto。

  4. 没有演示,SSL加密和ODBC支持编译波科:

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

祝好运!



Answer 3:

使用MinGW构建POCO不应该是一个大问题,它已经在过去所做的,但核心开发人员没有动力(不是我们的“痒”),并没有任何人抱怨最多的步骤,以拥有和维护MinGW的建设; 我们最好比别人欢迎服用这种作用更多。 任何有兴趣的可以联系我。



Answer 4:

有可能是错误如下:

条:“/Learn/POCO/poco-1.4.6p2/lib/MinGW/ia32/libPocoFoundation.dll.exe”:没有这样的文件

我们可以通过解决变线问题文件“建立\规则\全球”

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

STRIPCMD = $(STRIP) $@$


Answer 5:

有一个MSYS2包提供安装所需的电流的一切(在写作的时候)POCO C ++库1.9.0。

  • 要安装这个包,你首先需要从下载和安装MSYS2 msys2.org
  • pacman (它们集成在Arch Linux的packag管理器的端口),你可以找出你想要安装的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 -S mingw64/mingw-w64-x86_64-poco
  • 这将安装,但预建,POCO C ++的动态版本。 在我的系统中,库降落在msys2的安装目录

    • C:\msys64\mingw64\bin (DLL文件来这里)
    • C:\msys64\mingw64\lib (.A来到这里)


文章来源: Compile Poco with MinGW on Windows