我一直在尝试为我的C++应用程序配置google日志记录库glog,但找不到任何有关如何使其实际工作的信息,并且错误消息也没有多大帮助。
这是我尝试执行的示例代码,并且正在执行./myapp --v=2
,但是出现“错误:未知命令行标志'v'”。该库是否有任何文档,或者没有人知道如何正确配置它?
#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;
}
最佳答案
GLog需要在“google”命名空间而不是现在默认的“gflags”命名空间中编译的GFlags。
为了设置此命名空间,您必须从源代码编译并安装gflag,并将GFLAGS_NAMESPACE变量设置为“google”。
这是我在Kubuntu 14.04中遵循的步骤,应该与在Mac OSX中应该执行的步骤相似。这些会将GFlags源代码放置在/usr/local/src中,并将该库安装在/usr/local/lib&include目录中。最后一个命令(ldconfig)在系统中注册该库。
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
或者,您可以在GLog源中应用以下补丁(附在最后的回复中):
https://code.google.com/p/google-glog/issues/detail?id=194
在GLogs单元测试源文件中的include之后,它基本上使用gflag的命名空间,如下所示:
#ifdef HAVE_LIB_GFLAGS
#include <gflags/gflags.h>
using namespace gflags;
#endif
关于c++ - 配置C++的Google glog和gflags,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23581621/