@@ -141,6 +141,15 @@ IF(NOT CMAKE_BUILD_TYPE)
141141 SET (CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
142142ENDIF ()
143143
144+ include (GNUInstallDirs)
145+
146+ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.20.0" )
147+ cmake_path(RELATIVE_PATH CMAKE_INSTALL_FULL_LIBDIR BASE_DIRECTORY "${CMAKE_INSTALL_PREFIX} " OUTPUT_VARIABLE RELATIVE_LIBDIR)
148+ cmake_path(RELATIVE_PATH CMAKE_INSTALL_FULL_INCLUDEDIR BASE_DIRECTORY "${CMAKE_INSTALL_PREFIX} " OUTPUT_VARIABLE RELATIVE_INCLUDEDIR)
149+ else ()
150+ file (RELATIVE_PATH RELATIVE_LIBDIR ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_LIBDIR} )
151+ file (RELATIVE_PATH RELATIVE_INCLUDEDIR ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_INCLUDEDIR} )
152+ endif ()
144153
145154IF (ANDROID)
146155 INCLUDE (OsgAndroidMacroUtils)
@@ -883,18 +892,6 @@ IF(CYGWIN)
883892 SET (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG" )
884893ENDIF ()
885894
886- # Set OSG_INSTALL_LIBDIR to specify the installation directories of object code libraries
887- IF (DEFINED LIB_POSTFIX )
888- # Use LIB_POSTFIX if defined
889- SET (OSG_INSTALL_LIBDIR lib${LIB_POSTFIX} )
890- ELSE ()
891- INCLUDE (GNUInstallDirs)
892- SET (OSG_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR} )
893- ENDIF ()
894- IF (NOT DEFINED LIB_POSTFIX )
895- SET (LIB_POSTFIX "" )
896- ENDIF ()
897-
898895# Here we apparently do some funky stuff with making the bin/ and lib/
899896# folders which is probably needed to work around a very old CMake bug?
900897
@@ -936,11 +933,6 @@ FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # For each configuration (Debu
936933 ENDIF ()
937934ENDFOREACH ()
938935
939- #SET(INSTALL_BINDIR OpenSceneGraph/bin)
940- #SET(INSTALL_INCDIR OpenSceneGraph/include)
941- #SET(INSTALL_LIBDIR OpenSceneGraph/lib)
942- #SET(INSTALL_DOCDIR OpenSceneGraph/doc)
943-
944936################################################################################
945937# User Options
946938
@@ -1190,7 +1182,7 @@ IF(BUILD_DOCUMENTATION)
11901182 CONFIGURE_FILE (${PROJECT_SOURCE_DIR} /PlatformSpecifics/Windows/icons/src/osg32-32.png
11911183 ${PROJECT_BINARY_DIR} /doc /OpenSceneGraphReferenceDocs/osg32-32.png COPYONLY
11921184 )
1193- #INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
1185+
11941186 INSTALL (DIRECTORY ${PROJECT_BINARY_DIR} /doc /OpenSceneGraphReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openscenegraph-doc )
11951187
11961188 # now set up openthreads documentation generation
@@ -1206,7 +1198,7 @@ IF(BUILD_DOCUMENTATION)
12061198 CONFIGURE_FILE (${PROJECT_SOURCE_DIR} /PlatformSpecifics/Windows/icons/src/osg32-32.png
12071199 ${PROJECT_BINARY_DIR} /doc /OpenThreadsReferenceDocs/osg32-32.png COPYONLY
12081200 )
1209- #INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
1201+
12101202 INSTALL (DIRECTORY ${PROJECT_BINARY_DIR} /doc /OpenThreadsReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openthreads-doc )
12111203
12121204 # Process our other doxyfiles but don't create targets for these
@@ -1275,7 +1267,7 @@ FOREACH(PKGCONFIG_FILE ${PKGCONFIG_FILES})
12751267 ${PROJECT_BINARY_DIR} /packaging/pkgconfig/${PKGCONFIG_FILE} .pc
12761268 @ONLY
12771269 )
1278- INSTALL (FILES ${PROJECT_BINARY_DIR} /packaging/pkgconfig/${PKGCONFIG_FILE} .pc DESTINATION lib ${LIB_POSTFIX } /pkgconfig COMPONENT libopenscenegraph-dev)
1270+ INSTALL (FILES ${PROJECT_BINARY_DIR} /packaging/pkgconfig/${PKGCONFIG_FILE} .pc DESTINATION ${CMAKE_INSTALL_LIBDIR } /pkgconfig COMPONENT libopenscenegraph-dev)
12791271ENDFOREACH (PKGCONFIG_FILE)
12801272
12811273
@@ -1288,7 +1280,7 @@ IF(REQUIRES_LIBPATH_MESSAGE)
12881280 IF (NOT OSG_LIBPATH_MESSAGE_HAS_BEEN_RUN_BEFORE)
12891281 SET (OSG_LIBPATH_MESSAGE_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether the libpath message has been reported before" )
12901282
1291- MESSAGE ("\n The build system is configured to install libraries to ${CMAKE_INSTALL_PREFIX} /lib ${LIB_POSTFIX }\n "
1283+ MESSAGE ("\n The build system is configured to install libraries to ${CMAKE_INSTALL_FULL_LIBDIR } \n "
12921284 "Your applications may not be able to find your installed libraries unless you:\n "
12931285 " set your LD_LIBRARY_PATH (user specific) or\n "
12941286 " update your ld.so configuration (system wide)" )
@@ -1310,12 +1302,12 @@ IF(REQUIRES_LIBPATH_MESSAGE)
13101302 IF (EXISTS /etc/ld.so.conf)
13111303 MESSAGE ("You have an ld.so.conf file in /etc, if you wish to ensure \n "
13121304 "that applications find the installed osg libraries, system wide, you\n "
1313- "could add ${CMAKE_INSTALL_PREFIX} /lib ${LIB_POSTFIX } to it." )
1305+ "could add ${CMAKE_INSTALL_FULL_LIBDIR } to it." )
13141306 ENDIF ()
13151307 ENDIF ()
13161308
13171309 # emit a message during installation.
1318- INSTALL (CODE "MESSAGE(\" Libraries were installed to ${CMAKE_INSTALL_PREFIX} lib ${LIB_POSTFIX } .\\ nYou may need to update your ld.so configuration. \" )" )
1310+ INSTALL (CODE "MESSAGE(\" Libraries were installed to ${CMAKE_INSTALL_FULL_LIBDIR } .\\ nYou may need to update your ld.so configuration. \" )" )
13191311
13201312 ENDIF ()
13211313
0 commit comments