forked from yugabyte/glog
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Useful when using glog as subproject. Add an explanation at top like in gflags.git CMakeLists.txt
- Loading branch information
Showing
2 changed files
with
69 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,30 +1,81 @@ | ||
Building Glog with CMake | ||
======================== | ||
# Glog - CMake Support | ||
|
||
1. Create a build directory and `cd` to it. | ||
2. Run | ||
```bash | ||
cmake path/to/glog | ||
``` | ||
Glog comes with a CMake build script ([CMakeLists.txt](../CMakeLists.txt)) that can be used on a wide range of platforms. | ||
If you don't have CMake installed already, you can download it for free from <http://www.cmake.org/>. | ||
|
||
3. Afterwards, generated files (GNU make, Visual Studio, etc.) can be used to | ||
compile the project. | ||
CMake works by generating native makefiles or build projects that can be used in the compiler environment of your choice. | ||
You can either build Glog with CMake as a standalone project or it can be incorporated into an existing CMake build for another project. | ||
|
||
## Table of Contents | ||
|
||
Consuming Glog in a CMake Project | ||
================================= | ||
- [Building Glog with CMake](#building-glog-with-cmake) | ||
- [Consuming Glog in a CMake Project](#consuming-glog-in-a-cmake-project) | ||
- [Incorporating Glog into a CMake Project](#incorporating-glog-into-a-cmake-project) | ||
|
||
To use Glog in your project `myproj`, use: | ||
## Building Glog with CMake | ||
|
||
When building Glog as a standalone project, on Unix-like systems with GNU Make as build tool, the typical workflow is: | ||
|
||
1. Get the source code and change to it. | ||
e.g. cloning with git: | ||
```bash | ||
git clone git@github.com:google/glog.git | ||
cd glog | ||
``` | ||
|
||
2. Run CMake to configure the build tree. | ||
```bash | ||
cmake -H. -Bbuild -G "Unix Makefiles" | ||
``` | ||
note: To get the list of available generators (e.g. Visual Studio), use `-G ""` | ||
|
||
3. Afterwards, generated files can be used to compile the project. | ||
```bash | ||
cmake --build build | ||
``` | ||
|
||
4. Test the build software (optional). | ||
```bash | ||
cmake --build build --target test | ||
``` | ||
|
||
5. Install the built files (optional). | ||
```bash | ||
cmake --build build --target install | ||
``` | ||
|
||
## Consuming Glog in a CMake Project | ||
|
||
If you have Glog installed in your system, you can use the CMake command | ||
`find_package()` to include it in your CMake Project. | ||
|
||
```cmake | ||
cmake_minimum_required (VERSION 3.0) | ||
project (myproj) | ||
cmake_minimum_required(VERSION 3.0.2) | ||
project(myproj VERSION 1.0) | ||
find_package (glog 0.3.5 REQUIRED) | ||
find_package(glog 0.3.5 REQUIRED) | ||
add_executable (myapp main.cpp) | ||
target_link_libraries (myapp glog::glog) | ||
add_executable(myapp main.cpp) | ||
target_link_libraries(myapp glog::glog) | ||
``` | ||
|
||
Compile definitions and options will be added automatically to your target as | ||
needed. | ||
|
||
## Incorporating Glog into a CMake Project | ||
|
||
You can also use the CMake command `add_subdirectory()` to include Glog directly from a subdirectory of your project. | ||
The **glog::glog** target is in this case an ALIAS library target for the **glog** library target. | ||
|
||
```cmake | ||
cmake_minimum_required(VERSION 3.0.2) | ||
project(myproj VERSION 1.0) | ||
add_subdirectory(glog) | ||
add_executable(myapp main.cpp) | ||
target_link_libraries(myapp glog::glog) | ||
``` | ||
|
||
Again, compile definitions and options will be added automatically to your target as | ||
needed. |