From f432018bdbde308cc57b5bc9cabab4f1d436ce98 Mon Sep 17 00:00:00 2001 From: Mathis Logemann Date: Wed, 25 Nov 2020 12:16:06 +0100 Subject: [PATCH] added cache variable for lib/bin/archive output --- CMakeLists.txt | 19 ++++++++++++++++++- demo/c++/CMakeLists.txt | 6 +++--- demo/viewer/CMakeLists.txt | 6 +++--- deps/vcpkg | 1 + src/CMakeLists.txt | 6 +++--- src/json/CMakeLists.txt | 6 +++--- src/wkt/CMakeLists.txt | 6 +++--- test/CMakeLists.txt | 4 ++++ utils/geometry_to_wkb/CMakeLists.txt | 4 +++- utils/mapnik-index/CMakeLists.txt | 4 +++- utils/mapnik-render/CMakeLists.txt | 4 +++- utils/ogrindex/CMakeLists.txt | 4 +++- utils/pgsql2sqlite/CMakeLists.txt | 4 +++- utils/shapeindex/CMakeLists.txt | 4 +++- utils/svg2png/CMakeLists.txt | 4 +++- 15 files changed, 59 insertions(+), 23 deletions(-) create mode 160000 deps/vcpkg diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ab9d29d4..a9aaaf757 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ project(mapnik set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -option(BUILD_SHARED_LIBS "build mapnik dynamic" ON) +option(BUILD_SHARED_LIBS "build mapnik dynamic(ON) or static(OFF)" ON) option(BUILD_TEST "builds the tests" ON) option(USE_EXTERNAL_MAPBOX_GEOMETRY "Use a external mapnik/geometry.hpp. If off, use the submodule" OFF) option(USE_EXTERNAL_MAPBOX_POLYLABEL "Use a external mapnik/polylabel. If off, use the submodule" OFF) @@ -63,6 +63,23 @@ message("Installing fonts to ${ABSOLUTE_FONTS_INSTALL_DIR}") set(CMAKE_CXX_STANDARD 14 CACHE STRING "Sets the c++ standard. c++11 is minimum.") message("Using c++${CMAKE_CXX_STANDARD}") +if(WIN32) + set(DEFAULT_BIN_DIR bin) + set(DEFAULT_LIB_DIR lib) + set(DEFAULT_ARCHIVE_DIR lib) +else() + include(GNUInstallDirs) + set(DEFAULT_BIN_DIR ${CMAKE_INSTALL_BINDIR}) + set(DEFAULT_LIB_DIR ${CMAKE_INSTALL_LIBDIR}) + set(DEFAULT_ARCHIVE_DIR ${CMAKE_INSTALL_LIBDIR}) +endif() +# https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#runtime-output-artifacts +set(MAPNIK_BIN_DIR ${DEFAULT_BIN_DIR} CACHE STRING "Install directory for binaries") +# https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#library-output-artifacts +set(MAPNIK_LIB_DIR ${DEFAULT_LIB_DIR} CACHE STRING "Install directory for libraries") +# https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#archive-output-artifacts +set(MAPNIK_ARCHIVE_DIR ${DEFAULT_ARCHIVE_DIR} CACHE STRING "Install directory for archives") + find_package(Boost 1.74 REQUIRED COMPONENTS filesystem system regex) find_package(ICU REQUIRED COMPONENTS uc) find_package(Freetype REQUIRED) diff --git a/demo/c++/CMakeLists.txt b/demo/c++/CMakeLists.txt index 84627451b..48e83ce78 100644 --- a/demo/c++/CMakeLists.txt +++ b/demo/c++/CMakeLists.txt @@ -5,7 +5,7 @@ add_executable(mapnik-demo rundemo.cpp) target_link_libraries(mapnik-demo PRIVATE mapnik::headers mapnik::agg mapnik::mapnik) install(TARGETS mapnik-demo - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) diff --git a/demo/viewer/CMakeLists.txt b/demo/viewer/CMakeLists.txt index 721b76195..96e641498 100644 --- a/demo/viewer/CMakeLists.txt +++ b/demo/viewer/CMakeLists.txt @@ -40,7 +40,7 @@ fonts/1/dir=${ABSOLUTE_FONTS_INSTALL_DIR}" ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/viewer.ini DESTINATION bin) install(TARGETS mapnik-viewer - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) diff --git a/deps/vcpkg b/deps/vcpkg new file mode 160000 index 000000000..6e073f168 --- /dev/null +++ b/deps/vcpkg @@ -0,0 +1 @@ +Subproject commit 6e073f168652a551d8f29d19481ec67be3fccac8 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index be6388656..2ff07f3fc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -299,9 +299,9 @@ target_link_libraries(mapnik PRIVATE install(TARGETS mapnik EXPORT MapnikTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} INCLUDES DESTINATION include/ PUBLIC_HEADER DESTINATION include/ ) diff --git a/src/json/CMakeLists.txt b/src/json/CMakeLists.txt index c3b818387..8428e87e4 100644 --- a/src/json/CMakeLists.txt +++ b/src/json/CMakeLists.txt @@ -28,7 +28,7 @@ target_link_libraries(json PRIVATE mapnik::headers ${ICUU_LIB}) install(TARGETS json EXPORT MapnikTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) diff --git a/src/wkt/CMakeLists.txt b/src/wkt/CMakeLists.txt index 82de6f9cf..c787df8d5 100644 --- a/src/wkt/CMakeLists.txt +++ b/src/wkt/CMakeLists.txt @@ -21,7 +21,7 @@ target_link_libraries(wkt PRIVATE mapnik::headers) install(TARGETS wkt EXPORT MapnikTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fe7a2166b..eb5149e14 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -16,6 +16,10 @@ set(CATCH_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) add_library(Catch INTERFACE) target_include_directories(Catch INTERFACE ${CATCH_INCLUDE_DIR}) +# for cmake 3.19+ https://cmake.org/cmake/help/git-stage/policy/CMP0110.html +# might not be needed if catch updates its cmakes +cmake_policy(SET CMP0110 OLD) + add_executable(mapnik-test-unit unit/run.cpp unit/color/css_color.cpp diff --git a/utils/geometry_to_wkb/CMakeLists.txt b/utils/geometry_to_wkb/CMakeLists.txt index adb0c8409..b9f4cb3b1 100644 --- a/utils/geometry_to_wkb/CMakeLists.txt +++ b/utils/geometry_to_wkb/CMakeLists.txt @@ -9,5 +9,7 @@ target_link_libraries(geometry_to_wkb PRIVATE install(TARGETS geometry_to_wkb EXPORT MapnikTargets - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) \ No newline at end of file diff --git a/utils/mapnik-index/CMakeLists.txt b/utils/mapnik-index/CMakeLists.txt index e2c8f2cfb..4926c1b0e 100644 --- a/utils/mapnik-index/CMakeLists.txt +++ b/utils/mapnik-index/CMakeLists.txt @@ -17,5 +17,7 @@ target_link_libraries(mapnik-index PRIVATE ) install(TARGETS mapnik-index EXPORT MapnikTargets - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) \ No newline at end of file diff --git a/utils/mapnik-render/CMakeLists.txt b/utils/mapnik-render/CMakeLists.txt index b8dde3cd6..3e7ef65f1 100644 --- a/utils/mapnik-render/CMakeLists.txt +++ b/utils/mapnik-render/CMakeLists.txt @@ -11,5 +11,7 @@ target_link_libraries(mapnik-render PRIVATE ) install(TARGETS mapnik-render EXPORT MapnikTargets - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) \ No newline at end of file diff --git a/utils/ogrindex/CMakeLists.txt b/utils/ogrindex/CMakeLists.txt index 7ecad8db9..8e9eed31a 100644 --- a/utils/ogrindex/CMakeLists.txt +++ b/utils/ogrindex/CMakeLists.txt @@ -7,5 +7,7 @@ target_link_libraries(ogrindex PRIVATE mapnik::headers mapnik::mapnik) install(TARGETS ogrindex EXPORT MapnikTargets - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) diff --git a/utils/pgsql2sqlite/CMakeLists.txt b/utils/pgsql2sqlite/CMakeLists.txt index baa4ff156..c98427ec9 100644 --- a/utils/pgsql2sqlite/CMakeLists.txt +++ b/utils/pgsql2sqlite/CMakeLists.txt @@ -19,5 +19,7 @@ target_link_libraries(pgsql2sqlite PRIVATE install(TARGETS pgsql2sqlite EXPORT MapnikTargets - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) diff --git a/utils/shapeindex/CMakeLists.txt b/utils/shapeindex/CMakeLists.txt index b1a555d77..56eb501bd 100644 --- a/utils/shapeindex/CMakeLists.txt +++ b/utils/shapeindex/CMakeLists.txt @@ -14,5 +14,7 @@ target_link_libraries(shapeindex PRIVATE ) install(TARGETS shapeindex EXPORT MapnikTargets - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) \ No newline at end of file diff --git a/utils/svg2png/CMakeLists.txt b/utils/svg2png/CMakeLists.txt index eb1021903..e1c691c05 100644 --- a/utils/svg2png/CMakeLists.txt +++ b/utils/svg2png/CMakeLists.txt @@ -14,5 +14,7 @@ target_link_libraries(svg2png PRIVATE ) install(TARGETS svg2png EXPORT MapnikTargets - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${MAPNIK_LIB_DIR} + ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR} + RUNTIME DESTINATION ${MAPNIK_BIN_DIR} ) \ No newline at end of file