Qtは(MinGWの)glogを統合しました

入門

 パートglog使用紙は、窓は言ったが、窓の私の実際のニーズは、実際にはQtのglogに統合されて、私は差が依然として非常に大きい発見しました。記録処理の側には、より多くの好き嫌いピットを防ぐために。

プロセス

  1. 私の開発環境、Qtのツールチェーン
     のQtバージョン5.13.0
     MinGWのバージョン7.3.0(x64の-POSIX-seh- rev0の) GCC / G ++ 64ビット/ 7.3.0を含みます
  2. MinGWの環境
     MinGWの環境をインストールしておく必要があります(実際には、さまざまなビルトインのMinGWなど、Qtのコンパイルツール、理論的には、QtのMinGWのディレクトリツールは、環境変数、その後、ビルド環境を設定するためにパッケージ化することができます)が、私はあまりにも練習していませんでした。
     次のリンクへのMinGW側は、私は、次の1 MinGWの-W64-install.exeをインストールパッケージを使用し、
    リンク:MinGWのダウンロード
    リンク:MinGWのダウンロードは2
     ダウンロードは、以下の開いた構成に応じて、インストールされ、MinGWの設定
    注:図の設定。可能な限り、あなたのQtのプロジェクトの対応など。
  3. CMakeの(パートIの記事は、リンクや指示がある)
    CMakeのグラフィカルツールは、glogプロジェクトを開くCMakeの
    glogディレクトリとプロジェクトディレクトリを生成するを選択した後、クリックの設定をBuilderのタイプ(発電タイプ)を選択し、種類も必要とされ、あなたはQtのプロジェクトのコンパイルツールチェーン対応。MinGWの環境がインストールされてコンパイラオプションは、次のようなので、(あなたはまた、独自のコンパイラを指定することができますが、私はインストールしていないあなたはCMakelist.txtと環境モニタリングは、エンジニアリングおよび設定項目を生成するように構成することができますデフォルトのローカルコンパイラを選択します環境、Qtのツールは直接)失敗したパケット生成コンパイラを指定します。ご指定のビルドディレクトリ内のプロジェクト関連ファイルの自動生成した後。次に、[生成]をクリックし、次の世代のディレクトリには、次のステップをコンパイルすることができますメイクファイルで、メイクファイルを生成します。
  4. 编译
    命令行进入到生成工程的目录下,我上面是glog/glog-MinGW。
    dos中键入mingw32-make,就会根据生成的makefile编译工程了(如果你环境中没有配置MinGW,将会查不到该命令)。成功编译,如下图。
    コンパイル
    此时你可以从目录下取得libglog.a,和生成的环境相关头文件添加到Qt工程中使用了。
    Note: 默认生成的库libglog.a是静态库 ,而glog生成的几个头文件中,在windows平台下默认调用是动态库调用,所以你需要将头文件中的 __declspec(dllimport) 去掉,否则程序会强制去动态库寻找,而报错找不到符号。还有因为libglog.a内有一部分代码是调用系统库,就像下图,所以Qt链接静态库集成的时候,还需要链接一个dbghelp.lib系统库,程序才能编译通过。
    シンボル
    以上两种情况对应的错误分别是
    undefined reference to `__imp__ZN6google17InitGoogleLoggingEPKc’
    undefined reference to `__imp_SymFromAddr’

当然,更简单地方法就是指定生成动态库,这样在就不会存在上述问题。按下图,
シェアード
在cmake生成工程配置的时候将BUILD_SHARED_LIBS勾上,重新配置项。再编译一遍,目录下就会生成libglog.dll和libglog.dll.a(类似.lib)两个库。Qt工程中链接libglog.dll.a,即可正常编译运行。

  1. Qtの中に統合されたが、
    プロジェクトディレクトリのフォルダ内のglogファイルと、次の書類とはconfig.hとglogマスターを生成します\ srcが\ log_severity.h Qtのプロジェクトディレクトリに追加glogの下で、
    glog-mingwの
    glogマスター
    その後、プロジェクトへのダイナミックリンクライブラリは、
    adddll
    テストコードは次のように、
#include "mainwindow.h"
#include <QApplication>
#include "config.h"
#include "glog/logging.h"

using namespace GOOGLE_NAMESPACE;
int main(int argc, char *argv[])
{
    InitGoogleLogging(argv[0]);
    FLAGS_log_dir = "./";
    LOG(INFO)<<"THIS IS A INFO";
    LOG(INFO)<<"INFO 2";

    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

注:これは、Windowsプラットフォーム環境に来るときあなたは、プロジェクトときERRORマクロ紛争や窓を排除しつつ、エラーマクロの競合、マクロGLOG_NO_ABBREVIATED_SEVERITIESを宣言するために、この時の必要性、ERRORフルネームや他のマクロ展開を行うことであってもよいです。
オペレーティング結果、
結果
JG2

概要

 Qt glogを統合することにより、また、基本的な操作の窓の下でオープンソースプロジェクトの使用を考慮し、頻繁に隣に馴染みのツールチェーンを使用。

公開された60元の記事 ウォン称賛18 ビュー20000 +

おすすめ

転載: blog.csdn.net/BadAyase/article/details/103599174