本文首发于个人博客https://kezunlin.me/post/977f5125/,欢迎阅读!

compile glog and glags on ubuntu 16.04

Series

Guide

version

  1. wget https://github.com/schuhschuh/gflags/archive/v2.2.1.tar.gz
  2. wget https://github.com/google/glog/archive/v0.3.5.tar.gz

gflags

  1. cd gflags
  2. mkdir build
  3. cd build
  4. cmake-gui ..

with options

  1. BUILD_SHARED_LIBS ON
  2. INSTALL_SHARED_LIBS ON
  3. INSTALL_STATIC_LIBS OFF
  4. CMAKE_CONFIGURATION_TYPES Release
  5. REGISTER_INSTALL_PREFIX OFF
  6. #NAMESPACE google;gflags
  7. NAMESPACE google

compile and install

  1. make -j8
  2. sudo make install

gflags-config.cmake

comes from caffe/cmake/Modules/FindGFlags.cmake

  1. # - Try to find GFLAGS
  2. #
  3. # The following variables are optionally searched for defaults
  4. # GFLAGS_ROOT_DIR: Base directory where all GFLAGS components are found
  5. #
  6. # The following are set after configuration is done:
  7. # GFLAGS_FOUND
  8. # GFLAGS_INCLUDE_DIRS
  9. # GFLAGS_LIBRARIES
  10. # GFLAGS_LIBRARYRARY_DIRS
  11. include(FindPackageHandleStandardArgs)
  12. set(GFLAGS_ROOT_DIR "" CACHE PATH "Folder contains Gflags")
  13. # We are testing only a couple of files in the include directories
  14. if(WIN32)
  15. find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h
  16. PATHS ${GFLAGS_ROOT_DIR}/src/windows)
  17. else()
  18. find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h
  19. PATHS ${GFLAGS_ROOT_DIR})
  20. endif()
  21. if(MSVC)
  22. find_library(GFLAGS_LIBRARY_RELEASE
  23. NAMES libgflags
  24. PATHS ${GFLAGS_ROOT_DIR}
  25. PATH_SUFFIXES Release)
  26. find_library(GFLAGS_LIBRARY_DEBUG
  27. NAMES libgflags-debug
  28. PATHS ${GFLAGS_ROOT_DIR}
  29. PATH_SUFFIXES Debug)
  30. set(GFLAGS_LIBRARY optimized ${GFLAGS_LIBRARY_RELEASE} debug ${GFLAGS_LIBRARY_DEBUG})
  31. else()
  32. find_library(GFLAGS_LIBRARY gflags)
  33. endif()
  34. find_package_handle_standard_args(GFlags DEFAULT_MSG GFLAGS_INCLUDE_DIR GFLAGS_LIBRARY)
  35. if(GFLAGS_FOUND)
  36. set(GFLAGS_INCLUDE_DIRS ${GFLAGS_INCLUDE_DIR})
  37. set(GFLAGS_LIBRARIES ${GFLAGS_LIBRARY})
  38. message(STATUS "Found gflags (include: ${GFLAGS_INCLUDE_DIR}, library: ${GFLAGS_LIBRARY})")
  39. mark_as_advanced(GFLAGS_LIBRARY_DEBUG GFLAGS_LIBRARY_RELEASE
  40. GFLAGS_LIBRARY GFLAGS_INCLUDE_DIR GFLAGS_ROOT_DIR)
  41. endif()

copy gflags-config.cmake to /usr/local/lib/cmake/gflags/

glog

  1. cd glog
  2. mkdir build
  3. cd build
  4. cmake-gui ..

with options

  1. WITH_GFLAGS ON
  2. CMAKE_CONFIGURATION_TYPES Release
  3. BUILD_SHARED_LIBS ON # new by hand

compile and install

  1. make -j8
  2. sudo make install

glog-config.cmake

comes from caffe/cmake/Modules/FindGFlags.cmake

  1. # - Try to find Glog
  2. #
  3. # The following variables are optionally searched for defaults
  4. # GLOG_ROOT_DIR: Base directory where all GLOG components are found
  5. #
  6. # The following are set after configuration is done:
  7. # GLOG_FOUND
  8. # GLOG_INCLUDE_DIRS
  9. # GLOG_LIBRARIES
  10. # GLOG_LIBRARYRARY_DIRS
  11. include(FindPackageHandleStandardArgs)
  12. set(GLOG_ROOT_DIR "" CACHE PATH "Folder contains Google glog")
  13. if(WIN32)
  14. find_path(GLOG_INCLUDE_DIR glog/logging.h
  15. PATHS ${GLOG_ROOT_DIR}/src/windows)
  16. else()
  17. find_path(GLOG_INCLUDE_DIR glog/logging.h
  18. PATHS ${GLOG_ROOT_DIR})
  19. endif()
  20. if(MSVC)
  21. find_library(GLOG_LIBRARY_RELEASE libglog_static
  22. PATHS ${GLOG_ROOT_DIR}
  23. PATH_SUFFIXES Release)
  24. find_library(GLOG_LIBRARY_DEBUG libglog_static
  25. PATHS ${GLOG_ROOT_DIR}
  26. PATH_SUFFIXES Debug)
  27. set(GLOG_LIBRARY optimized ${GLOG_LIBRARY_RELEASE} debug ${GLOG_LIBRARY_DEBUG})
  28. else()
  29. find_library(GLOG_LIBRARY glog
  30. PATHS ${GLOG_ROOT_DIR}
  31. PATH_SUFFIXES lib lib64)
  32. endif()
  33. find_package_handle_standard_args(Glog DEFAULT_MSG GLOG_INCLUDE_DIR GLOG_LIBRARY)
  34. if(GLOG_FOUND)
  35. set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR})
  36. set(GLOG_LIBRARIES ${GLOG_LIBRARY})
  37. message(STATUS "Found glog (include: ${GLOG_INCLUDE_DIR}, library: ${GLOG_LIBRARY})")
  38. mark_as_advanced(GLOG_ROOT_DIR GLOG_LIBRARY_RELEASE GLOG_LIBRARY_DEBUG
  39. GLOG_LIBRARY GLOG_INCLUDE_DIR)
  40. endif()

copy glog-config.cmake to /usr/local/lib/cmake/glog/

Example Code

CMakeLists.txt

  1. cmake_minimum_required(VERSION 2.6)
  2. project(glog_proj)
  3. # Locate GTest
  4. find_package(GTest REQUIRED)
  5. include_directories(${GTEST_INCLUDE_DIRS})
  6. find_package(GFLAGS REQUIRED)
  7. include_directories(${GFLAGS_INCLUDE_DIRS})
  8. find_package(GLOG REQUIRED)
  9. include_directories(${GLOG_INCLUDE_DIRS})
  10. # for windows
  11. #add_definitions( -DGLOG_NO_ABBREVIATED_SEVERITIES )
  12. MESSAGE( [Main] " GFLAGS_FOUND = ${GFLAGS_FOUND}")
  13. MESSAGE( [Main] " GFLAGS_INCLUDE_DIRS = ${GFLAGS_INCLUDE_DIRS}")
  14. MESSAGE( [Main] " GFLAGS_LIBRARIES = ${GFLAGS_LIBRARIES}")
  15. MESSAGE( [Main] " GLOG_FOUND = ${GLOG_FOUND}")
  16. MESSAGE( [Main] " GLOG_INCLUDE_DIRS = ${GLOG_INCLUDE_DIRS}")
  17. MESSAGE( [Main] " GLOG_LIBRARIES = ${GLOG_LIBRARIES}")
  18. add_executable(demo glog_main.cpp)
  19. target_link_libraries (demo ${GLOG_LIBRARIES} ${GFLAGS_LIBRARIES})

main.cpp

  1. #include <gflags/gflags.h>
  2. #include <glog/logging.h>
  3. int main(int argc, char **argv)
  4. {
  5. /*
  6. FLAGS_logtostderr = true;
  7. FLAGS_alsologtostderr = true;
  8. FLAGS_colorlogtostderr = true;
  9. FLAGS_log_prefix = true;
  10. FLAGS_logbufsecs = 0; //0 means realtime
  11. FLAGS_max_log_size = 10; // MB
  12. */
  13. google::InitGoogleLogging(argv[0]); // init google logging
  14. google::SetLogDestination(google::GLOG_FATAL, "../log/log_fatal_");
  15. google::SetLogDestination(google::GLOG_ERROR, "../log/log_error_");
  16. google::SetLogDestination(google::GLOG_WARNING, "../log/log_warning_");
  17. google::SetLogDestination(google::GLOG_INFO, "../log/log_info_");
  18. LOG(INFO) << "Hello GLOG";
  19. return 0;
  20. }

Reference

History

  • 20180223: created.

Copyright

ubuntu 16.04上源码编译glog和gflags 编写glog-config.cmake和gflags-config.cmake | compile glog and glags on ubuntu 16.04的更多相关文章

  1. Ubuntu 16.04上源码编译和安装pytorch教程,并编写C++ Demo CMakeLists.txt | tutorial to compile and use pytorch on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/54e7a3d8/,欢迎阅读最新内容! tutorial to compile and use pytorch on ubuntu ...

  2. ubuntu 16.04上源码编译libjpeg-turbo和使用教程 | compile and use libjpeg-turbo on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/9f626e7a/,欢迎阅读! compile and use libjpeg-turbo on ubuntu 16.04 Seri ...

  3. ubuntu 16.04上源码编译和安装cgal并编写CMakeLists.txt | compile and install cgal on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/39ab7ed9/,欢迎阅读最新内容! compile and install cgal on ubuntu 16.04 Guide ...

  4. ubuntu 16.04上源码编译dlib教程 | compile dlib on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/c6ead512/,欢迎阅读! compile dlib on ubuntu 16.04 Series Part 1: compil ...

  5. ubuntu 16.04上源码编译opengv | compile opengv on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/1e5d14ee/,欢迎阅读! compile opengv on ubuntu 16.04 Series compile open ...

  6. Ubuntu 16.04上源码编译Poco并编写cmake文件 | guide to compile and install poco cpp library on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/281dd8cd/,欢迎阅读! guide to compile and install poco cpp library on u ...

  7. ubuntu 14.04上源码编译安装php7

    wget https://downloads.php.net/~ab/php-7.0.0alpha2.tar.bz2 //用winscp把下载好的文件上传到网站中 tar jxf php-7.0.0a ...

  8. CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境

    CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...

  9. 记一次在mac上源码编译curl,使其支持NSS的过程

    一.背景 在一次学习https原理的过程中,希望客户端指定特定的cipher suites来抓包分析SSL/TLS的握手过程,就想到了使用curl工具,而不是使用浏览器. 接下来使用man curl找 ...

随机推荐

  1. Servlet处理原生Ajax请求

    萌新小白人生中的第一篇博客,难免会有差错,还望各位大佬多多包涵. 1. Ajax技术简介      Ajax(Asynchronous JavaScript and XML,异步JavaScript和 ...

  2. 你好,Go语言

    本文是「vangoleo的Go语言学习笔记」系列文章之一. 官网: http://www.vangoleo.com/go/hello-golang/ 我在2015年第一次接触Go语言,完成了Hello ...

  3. C语言I博客作业06

    这个作业属于哪个课程 C语言程序设计I 这个作业要求在哪里 作业链接 我在这个课程的目标是 熟悉分支结构 这个作业在那个具体方面帮助我实现目标 可以更完整的编写程序及博客园 参考文献 [参考文献](h ...

  4. SpringBoot与MybatisPlus3.X整合示例(十六)

    包含 分页.逻辑删除.自定义全局操作 等绝大部分常用功能的使用示例,相当于大整合的完整示例 pom.xml <dependencies> <dependency> <gr ...

  5. 被低估的.NET(下)-2019 中国.NET 开发者峰会

    Time flies!不知不觉距离上篇<被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾>和中篇<被低估的.net(中) - 广州.net俱乐部201 ...

  6. Scrapy 之如何发送post请求

    import scrapy import json class PostSpider(scrapy.Spider): name = 'post' # allowed_domains = ['www.x ...

  7. Kruskal算法求最小生成树 笔记与思路整理

    整理一下前一段时间的最小生成树的算法.(其实是刚弄明白 Kruskal其实算是一种贪心算法.先将边按权值排序,每次选一条没选过的权值最小边加入树,若加入后成环就跳过. 先贴张图做个示例. (可视化均来 ...

  8. Django学习day6——模板

    在day4中,你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. html = "<html><body& ...

  9. 爬虫之CrawlSpider简单案例之读书网

    项目名py文件下 class DsSpider(CrawlSpider): name = 'ds' allowed_domains = ['dushu.com'] start_urls = ['htt ...

  10. CSPS模拟 80

    题还没改完就来臭不要脸的写反思了. (主要因为太困了懒得改了) (还因为T2看起来太过弱智) (也许等我生物钟恢复正常后能当做课余消遣水一水) statistic:skyh接了两杯水,真能喝啊 然后他 ...