INSTALL.md 4.5 KB

Installing a binary distribution package

No official binary distribution packages are provided by the gflags developers. There may, however, be binary packages available for your operating system. Please consult also the package repositories of your Linux distribution.

On Debian/Ubuntu Linux, gflags can be installed using the following command:

sudo apt-get install libgflags-dev

On macOS, Homebrew includes a formula for gflags:

brew install gflags

Compiling the source code with Bazel

To use gflags in a Bazel project, map it in as an external dependency by editing your WORKSPACE file:

git_repository(
    name = "com_github_gflags_gflags",
    commit = "<INSERT COMMIT SHA HERE>",
    remote = "https://github.com/gflags/gflags.git",
)

You can then add @com_github_gflags_gflags//:gflags to the deps section of a cc_binary or cc_library rule, and #include <gflags/gflags.h> to include it in your source code.

Compiling the source code with vcpkg

You can download and install gflags using the vcpkg dependency manager:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
vcpkg install gflags

The gflags port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

Compiling the source code with CMake

The build system of gflags is since version 2.1 based on CMake. The common steps to build, test, and install software are therefore:

  1. Extract source files.
  2. Create build directory and change to it.
  3. Run CMake to configure the build tree.
  4. Build the software using selected build tool.
  5. Test the built software.
  6. Install the built files.

On Unix-like systems with GNU Make as build tool, these build steps can be summarized by the following sequence of commands executed in a shell, where $package and $version are shell variables which represent the name of this package and the obtained version of the software.

$ tar xzf gflags-$version-source.tar.gz
$ cd gflags-$version
$ mkdir build && cd build
$ ccmake ..

  - Press 'c' to configure the build system and 'e' to ignore warnings.
  - Set CMAKE_INSTALL_PREFIX and other CMake variables and options.
  - Continue pressing 'c' until the option 'g' is available.
  - Then press 'g' to generate the configuration files for GNU Make.

$ make
$ make test    (optional)
$ make install (optional)

In the following, only gflags-specific CMake settings available to configure the build and installation are documented. Note that most of these variables are for advanced users and binary package maintainers only. They usually do not have to be modified.

CMake Option Description
CMAKE_INSTALL_PREFIX Installation directory, e.g., "/usr/local" on Unix and "C:\Program Files\gflags" on Windows.
BUILD_SHARED_LIBS Request build of dynamic link libraries.
BUILD_STATIC_LIBS Request build of static link libraries. Implied if BUILD_SHARED_LIBS is OFF.
BUILD_PACKAGING Enable binary package generation using CPack.
BUILD_TESTING Build tests for execution by CTest.
BUILD_NC_TESTS Request inclusion of negative compilation tests (requires Python).
BUILD_CONFIG_TESTS Request inclusion of package configuration tests (requires Python).
BUILD_gflags_LIBS Request build of multi-threaded gflags libraries (if threading library found).
BUILD_gflags_nothreads_LIBS Request build of single-threaded gflags libraries.
GFLAGS_NAMESPACE Name of the C++ namespace to be used by the gflags library. Note that the public source header files are installed in a subdirectory named after this namespace. To maintain backwards compatibility with the Google Commandline Flags, set this variable to "google". The default is "gflags".
GFLAGS_INTTYPES_FORMAT String identifying format of built-in integer types.
GFLAGS_INCLUDE_DIR Name of headers installation directory relative to CMAKE_INSTALL_PREFIX.
LIBRARY_INSTALL_DIR Name of library installation directory relative to CMAKE_INSTALL_PREFIX.
INSTALL_HEADERS Request installation of public header files.