Qt Creator で使用できるように MinGW で poco をコンパイルする必要がありますが、方法がわかりません。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 を使用する必要がない場合は、オプション-lsslと-lcryptoを SYSLIBS 行で削除する必要があります。
デモ、SSL、暗号化、および ODBC サポートなしで Poco をコンパイルします。
$ ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --prefix=./_INSTALL $ make clean $ make -j4 -nodemos $ make install
幸運を!
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}
お役に立てれば。
MinGW で POCO を構築することは大したことではありません。過去に行われたことがありますが、コア開発者にはインセンティブがなく (私たちの「かゆみ」ではありません)、MinGW ビルドを所有して維持するためにステップアップする人はいません。だれかがその役割を担ってくれることを歓迎します。興味のある方は私に連絡してください。
次のようなエラーが発生する可能性があります。
ストリップ: '/Learn/POCO/poco-1.4.6p2/lib/MinGW/ia32/libPocoFoundation.dll.exe': そのようなファイルはありません
ファイル「build\rules\global」の行を変更することで問題を解決できます
STRIPCMD = $(STRIP) $@$(BINEXT)
に
STRIPCMD = $(STRIP) $@$