Pertanyaan Konfigurasikan glog google dan gflags untuk c ++


Saya sudah mencoba mengkonfigurasi glogging google logging library untuk aplikasi C ++ saya tetapi saya tidak dapat menemukan informasi apa pun tentang cara membuatnya bekerja, dan pesan kesalahan kurang bermanfaat.

Ini adalah contoh kode yang saya coba eksekusi, dan saya mengeksekusi ./myapp --v=2, tetapi saya mendapatkan "ERROR: baris perintah baris yang tidak dikenal 'v'". Apakah ada dokumentasi untuk pustaka ini, atau adakah yang tahu cara mengonfigurasinya dengan benar?

#include <glog/logging.h>
#include <gflags/gflags.h>

int main(int argc, char** argv) {
    google::InitGoogleLogging(argv[0]);
    google::ParseCommandLineFlags(&argc, &argv, true);

    VLOG(1) << "I'm printed when you run the program with --v=1 or higher";
    VLOG(2) << "I'm printed when you run the program with --v=2 or higher";
    return 0;
}

5
2018-05-10 13:28


asal


Jawaban:


GLOG membutuhkan GFlags dikompilasi di ruang nama "google" dan bukan namespace "gflags" default sekarang.

Untuk mengatur namespace ini Anda harus mengkompilasi dan menginstal gflags dari sumber dan mengatur variabel GFLAGS_NAMESPACE ke "google".

Berikut adalah langkah-langkah yang saya ikuti di Kubuntu 14.04 dan harus serupa dengan apa yang seharusnya Anda lakukan di Mac OSX. Ini akan menempatkan sumber GFlags di / usr / local / src dan menginstal pustaka di direktori / usr / local / lib & include. Perintah terakhir (ldconfig) mendaftarkan pustaka di dalam sistem.

cd /usr/local/src/
cp /path/to/downloaded/gflags-2.1.1.tar.gz .
sudo tar xzf gflags-2.1.1.tar.gz
cd /tmp
mkdir buildgflags
cd buildgflags
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON \
-DGFLAGS_NAMESPACE=google -G"Unix Makefiles" /usr/local/src/gflags-2.1.1/
make
sudo make install
sudo ldconfig

Atau Anda dapat menerapkan tambalan berikut di sumber GLog (terlampir di balasan terakhir):

https://code.google.com/p/google-glog/issues/detail?id=194

Pada dasarnya ini menggunakan namespace gflags setelah menyertakan file-file sumber uji coba GLogs, seperti:

#ifdef HAVE_LIB_GFLAGS
#include <gflags/gflags.h>
using namespace gflags;
#endif

8
2017-09-13 15:41