Skip to content

Commit

Permalink
Use relative bin and lib install paths.
Browse files Browse the repository at this point in the history
CMake's install will combine the relative path with the
absolute path passed via CMAKE_INSTALL_PREFIX. This
shouldn't be handled in CMakeLists.txt files.

The state before resulted in absolute paths being
used in citygmlConfig.cmake. That prohibits prebuilding
the library and deploying it on other machines/paths.
  • Loading branch information
gostefan committed Sep 4, 2024
1 parent c7de8a8 commit 38734e9
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 25 deletions.
6 changes: 0 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,6 @@ SET(OUTPUT_LIBDIR ${PROJECT_BINARY_DIR}/lib)
MAKE_DIRECTORY(${OUTPUT_LIBDIR})
SET(LIBRARY_OUTPUT_PATH ${OUTPUT_LIBDIR})

if(NOT DEFINED BIN_INSTALL_DIR)
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
endif(NOT DEFINED BIN_INSTALL_DIR)
if(NOT DEFINED LIB_INSTALL_DIR)
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib")
endif(NOT DEFINED LIB_INSTALL_DIR)
if(NOT DEFINED DATA_INSTALL_DIR)
set(DATA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share")
endif(NOT DEFINED DATA_INSTALL_DIR)
Expand Down
16 changes: 5 additions & 11 deletions sources/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -248,28 +248,22 @@ set_target_properties( ${target} PROPERTIES
SOVERSION ${META_VERSION_MAJOR}
)

if(NOT DEFINED BIN_INSTALL_DIR)
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
endif(NOT DEFINED BIN_INSTALL_DIR)
if(NOT DEFINED LIB_INSTALL_DIR)
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib")
endif(NOT DEFINED LIB_INSTALL_DIR)
if(NOT DEFINED INCLUDE_INSTALL_DIR)
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/citygml")
endif(NOT DEFINED INCLUDE_INSTALL_DIR)

if(WIN32)
set(CONFIG_INSTALL_DIR "cmake")
else()
set(CONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/citygml")
set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/cmake/citygml")
endif()

INSTALL(
TARGETS ${target}
EXPORT citygmlConfigInternal
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT "runtime"
)
INSTALL(
Expand Down Expand Up @@ -331,7 +325,7 @@ configure_file(citygml.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/citygml.pc)

INSTALL(
FILES ${CMAKE_CURRENT_BINARY_DIR}/citygml.pc
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig
COMPONENT "development"
)

6 changes: 3 additions & 3 deletions sources/citygml.pc.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
prefix=${CMAKE_INSTALL_PREFIX}
exec_prefix=${BIN_INSTALL_DIR}
libdir=${LIB_INSTALL_DIR}
exec_prefix=${CMAKE_INSTALL_BINDIR}
libdir=${CMAKE_INSTALL_LIBDIR}
includedir=${INCLUDE_INSTALL_DIR}

Name: citygml
Description: Read and Write CityGML files
Requires: ${PKG_CONFIG_REQUIRES}
Version: ${META_VERSION}
Libs: -L${LIB_INSTALL_DIR} -lcitygml${LIBCITYGML_POSTFIX}
Libs: -L${CMAKE_INSTALL_LIBDIR} -lcitygml${LIBCITYGML_POSTFIX}
Cflags: -I${INCLUDE_INSTALL_DIR}
6 changes: 1 addition & 5 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,7 @@ IF(LIBCITYGML_USE_OPENGL)
TARGET_LINK_LIBRARIES( citygmltest citygml ${OPENGL_LIBRARIES} )
ENDIF(LIBCITYGML_USE_OPENGL)

if(NOT DEFINED BIN_INSTALL_DIR)
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
endif(NOT DEFINED BIN_INSTALL_DIR)

install(TARGETS citygmltest RUNTIME DESTINATION ${BIN_INSTALL_DIR})
install(TARGETS citygmltest RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})


add_test(NAME berlin_open_data_sample_data COMMAND citygmltest ../../data/berlin_open_data_sample_data.citygml)
Expand Down

0 comments on commit 38734e9

Please sign in to comment.