Skip to content

Commit 57fc29b

Browse files
authored
CMake: Use GNUInstallDirs for install destination (#186)
https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
1 parent af60e1f commit 57fc29b

2 files changed

Lines changed: 60 additions & 23 deletions

File tree

CMakeLists.txt

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ include(CMakeDependentOption)
77
include(CheckCXXCompilerFlag)
88
include(FeatureSummary)
99
include(FindPackageHandleStandardArgs)
10+
include(GNUInstallDirs)
1011

1112
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
1213
# Avoid "Policy CMP0042 is not set" warning on macOS.
@@ -333,7 +334,7 @@ install(FILES src/s2/_fp_contract_off.h
333334
src/s2/s2wedge_relations.h
334335
src/s2/sequence_lexicon.h
335336
src/s2/value_lexicon.h
336-
DESTINATION include/s2)
337+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2")
337338
install(FILES src/s2/base/casts.h
338339
src/s2/base/commandlineflags.h
339340
src/s2/base/integral_types.h
@@ -342,11 +343,11 @@ install(FILES src/s2/base/casts.h
342343
src/s2/base/mutex.h
343344
src/s2/base/port.h
344345
src/s2/base/spinlock.h
345-
DESTINATION include/s2/base)
346+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/base")
346347
install(FILES src/s2/strings/ostringstream.h
347-
DESTINATION include/s2/strings)
348+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/strings")
348349
install(FILES src/s2/third_party/absl/algorithm/algorithm.h
349-
DESTINATION include/s2/third_party/absl/algorithm)
350+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/algorithm")
350351
install(FILES src/s2/third_party/absl/base/attributes.h
351352
src/s2/third_party/absl/base/casts.h
352353
src/s2/third_party/absl/base/config.h
@@ -357,42 +358,42 @@ install(FILES src/s2/third_party/absl/base/attributes.h
357358
src/s2/third_party/absl/base/policy_checks.h
358359
src/s2/third_party/absl/base/port.h
359360
src/s2/third_party/absl/base/thread_annotations.h
360-
DESTINATION include/s2/third_party/absl/base)
361+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/base")
361362
install(FILES src/s2/third_party/absl/base/internal/identity.h
362363
src/s2/third_party/absl/base/internal/inline_variable.h
363364
src/s2/third_party/absl/base/internal/invoke.h
364365
src/s2/third_party/absl/base/internal/throw_delegate.h
365366
src/s2/third_party/absl/base/internal/unaligned_access.h
366-
DESTINATION include/s2/third_party/absl/base/internal)
367+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/base/internal")
367368
install(FILES src/s2/third_party/absl/container/inlined_vector.h
368-
DESTINATION include/s2/third_party/absl/container)
369+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/container")
369370
install(FILES src/s2/third_party/absl/container/internal/compressed_tuple.h
370371
src/s2/third_party/absl/container/internal/container_memory.h
371372
src/s2/third_party/absl/container/internal/layout.h
372-
DESTINATION include/s2/third_party/absl/container/internal)
373+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/container/internal")
373374
install(FILES src/s2/third_party/absl/memory/memory.h
374-
DESTINATION include/s2/third_party/absl/memory)
375+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/memory")
375376
install(FILES src/s2/third_party/absl/meta/type_traits.h
376-
DESTINATION include/s2/third_party/absl/meta)
377+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/meta")
377378
install(FILES src/s2/third_party/absl/numeric/int128.h
378379
src/s2/third_party/absl/numeric/int128_have_intrinsic.inc
379380
src/s2/third_party/absl/numeric/int128_no_intrinsic.inc
380-
DESTINATION include/s2/third_party/absl/numeric)
381+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/numeric")
381382
install(FILES src/s2/third_party/absl/strings/numbers.h
382383
src/s2/third_party/absl/strings/str_cat.h
383384
src/s2/third_party/absl/strings/string_view.h
384-
DESTINATION include/s2/third_party/absl/strings)
385+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/strings")
385386
install(FILES src/s2/third_party/absl/types/span.h
386-
DESTINATION include/s2/third_party/absl/types)
387+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/types")
387388
install(FILES src/s2/third_party/absl/utility/utility.h
388-
DESTINATION include/s2/third_party/absl/utility)
389+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/third_party/absl/utility")
389390
install(FILES src/s2/util/bits/bits.h
390-
DESTINATION include/s2/util/bits)
391+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/bits")
391392
install(FILES src/s2/util/coding/coder.h
392393
src/s2/util/coding/varint.h
393-
DESTINATION include/s2/util/coding)
394+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/coding")
394395
install(FILES src/s2/util/endian/endian.h
395-
DESTINATION include/s2/util/endian)
396+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/endian")
396397
install(FILES src/s2/util/gtl/btree.h
397398
src/s2/util/gtl/btree_container.h
398399
src/s2/util/gtl/btree_map.h
@@ -403,18 +404,21 @@ install(FILES src/s2/util/gtl/btree.h
403404
src/s2/util/gtl/densehashtable.h
404405
src/s2/util/gtl/hashtable_common.h
405406
src/s2/util/gtl/layout.h
406-
DESTINATION include/s2/util/gtl)
407+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/gtl")
407408
install(FILES src/s2/util/hash/mix.h
408-
DESTINATION include/s2/util/hash)
409+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/hash")
409410
install(FILES src/s2/util/math/mathutil.h
410411
src/s2/util/math/matrix3x3.h
411412
src/s2/util/math/vector.h
412413
src/s2/util/math/vector3_hash.h
413-
DESTINATION include/s2/util/math)
414+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/math")
414415
install(FILES src/s2/util/units/length-units.h
415416
src/s2/util/units/physical-units.h
416-
DESTINATION include/s2/util/units)
417-
install(TARGETS s2 s2testing DESTINATION lib)
417+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/units")
418+
install(TARGETS s2 s2testing
419+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
420+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
421+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
418422

419423
message("GTEST_ROOT: ${GTEST_ROOT}")
420424
if (GTEST_ROOT)

README.md

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,46 @@ cd build
8888
cmake -DGTEST_ROOT=/usr/src/gtest ..
8989
make
9090
make test # If GTEST_ROOT specified above.
91-
sudo make install
9291
```
9392

9493
Enable gflags and glog with `cmake -DWITH_GFLAGS=ON -DWITH_GLOG=ON ...`.
9594

9695
Disable building of shared libraries with `-DBUILD_SHARED_LIBS=OFF`.
9796

97+
## Installing
98+
99+
From `build` subdirectory:
100+
101+
```
102+
make install
103+
```
104+
105+
Prefix it with `sudo` if needed:
106+
107+
```
108+
sudo make install
109+
```
110+
111+
_NOTE_: There is not `uninstall` target but `install_manifest.txt` may be helpfull.
112+
113+
All files will be installed at location specified in `CMAKE_INSTALL_PREFIX` variable.
114+
115+
Several suffix variables used for some file groups:
116+
117+
Variable | Default | Description
118+
-------- | ------- | -----------
119+
`CMAKE_INSTALL_INCLUDEDIR` | `include` | For header files
120+
`CMAKE_INSTALL_BINDIR` | `bin` | For executables and `*.dll` files on `DLL`-based platforms
121+
`CMAKE_INSTALL_LIBDIR` | `lib` | For library files (`*.so`, `*.a`, `*.lib` etc)
122+
123+
If needed set this variables on command line as `cmake` arguments with `-D` prefix or edit from `build` subdirectory:
124+
125+
```
126+
make edit_cache
127+
```
128+
129+
For more info read: [The CMake Cache](https://cmake.org/cmake/help/latest/guide/user-interaction/index.html#the-cmake-cache).
130+
98131
## Python
99132

100133
If you want the Python interface, you will also need:

0 commit comments

Comments
 (0)