Skip to content

Commit

Permalink
Merge pull request google#82 from sergiud/cmake-imported-target
Browse files Browse the repository at this point in the history
Better support and documentation for CMake projects that consume glog
  • Loading branch information
ukai committed Apr 13, 2016
2 parents 54581ff + c96819f commit 119289e
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 33 deletions.
32 changes: 6 additions & 26 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -551,44 +551,24 @@ install (TARGETS glog
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)

# Build tree config

set (glog_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
set (glog_PACKAGE_DEPS)

if (gflags_FOUND)
set (glog_PACKAGE_DEPS
"
include (CMakeFindDependencyMacro)
find_dependency (gflags ${gflags_VERSION})
")
set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION})")
endif (gflags_FOUND)

configure_package_config_file (glog-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake INSTALL_DESTINATION
lib/cmake/glog PATH_VARS glog_INCLUDE_DIR
${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
INSTALL_DESTINATION lib/cmake/glog
NO_CHECK_REQUIRED_COMPONENTS_MACRO)

# The version file is the same both for build tree and install mode config
write_basic_package_version_file (glog-config-version.cmake VERSION
${GLOG_VERSION} COMPATIBILITY SameMajorVersion)

# Install config

set (glog_INCLUDE_DIR include)

configure_package_config_file (glog-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/glog-config.cmake
INSTALL_DESTINATION lib/cmake/glog PATH_VARS glog_INCLUDE_DIR
NO_CHECK_REQUIRED_COMPONENTS_MACRO)

export (TARGETS glog FILE glog-targets.cmake)
export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
export (PACKAGE glog)

install (FILES
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/glog-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
DESTINATION lib/cmake/glog)

install (EXPORT glog-targets DESTINATION lib/cmake/glog)
install (EXPORT glog-targets NAMESPACE glog:: DESTINATION lib/cmake/glog)
30 changes: 30 additions & 0 deletions cmake/INSTALL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Building Glog with CMake
========================

1. Create a build directory and `cd` to it.
2. Run
```bash
cmake path/to/glog
```

3. Afterwards, generated files (GNU make, Visual Studio, etc.) can be used to
compile the project.


Consuming Glog in a CMake Project
=================================

To use Glog in your project `myproj`, use:

```cmake
cmake_minimum_required (VERSION 3.0)
project (myproj)
find_package (glog 0.3.4 REQUIRED)
add_executable (myapp main.cpp)
target_link_libraries (myapp glog::glog)
```

Compile definitions and options will be added automatically to your target as
needed.
10 changes: 3 additions & 7 deletions glog-config.cmake.in
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
@PACKAGE_INIT@

include ("${CMAKE_CURRENT_LIST_DIR}/glog-targets.cmake")
set_and_check (glog_INCLUDE_DIR "@PACKAGE_glog_INCLUDE_DIR@")

@glog_PACKAGE_DEPS@
include (CMakeFindDependencyMacro)

set (glog_LIBRARY glog)
@gflags_DEPENDENCY@

set (glog_LIBRARIES ${glog_LIBRARY})
set (glog_INCLUDE_DIRS ${glog_INCLUDE_DIR})
include ("${CMAKE_CURRENT_LIST_DIR}/glog-targets.cmake")

0 comments on commit 119289e

Please sign in to comment.