# Build the library... # Include all the .cpp files in the library. file (GLOB SOURCES [A-Za-z]*.cpp) file (GLOB HEADERS ${PROJECT_BINARY_DIR}/include/GeographicLib/Config.h ../include/GeographicLib/[A-Za-z]*.hpp) add_definitions (-DGEOGRAPHICLIB_DATA="${GEOGRAPHICLIB_DATA}") # Define the library and specify whether it is shared or not. if (GEOGRAPHICLIB_SHARED_LIB) add_library (${PROJECT_SHARED_LIBRARIES} SHARED ${SOURCES} ${HEADERS}) endif () if (GEOGRAPHICLIB_STATIC_LIB) add_library (${PROJECT_STATIC_LIBRARIES} STATIC ${SOURCES} ${HEADERS}) endif () # Set the version number on the library if (MSVC) if (GEOGRAPHICLIB_SHARED_LIB) set_target_properties (${PROJECT_SHARED_LIBRARIES} PROPERTIES VERSION "${LIBVERSION_BUILD}" OUTPUT_NAME ${LIBNAME} IMPORT_SUFFIX -i.lib) if (CMAKE_VERSION VERSION_LESS 2.8.11) set_target_properties (${PROJECT_SHARED_LIBRARIES} PROPERTIES COMPILE_DEFINITIONS GEOGRAPHICLIB_SHARED_LIB=1) else () target_compile_definitions (${PROJECT_SHARED_LIBRARIES} PUBLIC GEOGRAPHICLIB_SHARED_LIB=1) endif () endif () if (GEOGRAPHICLIB_STATIC_LIB) set_target_properties (${PROJECT_STATIC_LIBRARIES} PROPERTIES VERSION "${LIBVERSION_BUILD}" OUTPUT_NAME ${LIBNAME}) if (CMAKE_VERSION VERSION_LESS 2.8.11) set_target_properties (${PROJECT_STATIC_LIBRARIES} PROPERTIES COMPILE_DEFINITIONS GEOGRAPHICLIB_SHARED_LIB=0) else () target_compile_definitions (${PROJECT_STATIC_LIBRARIES} PUBLIC GEOGRAPHICLIB_SHARED_LIB=0) endif () endif () else () set_target_properties ( ${PROJECT_SHARED_LIBRARIES} ${PROJECT_STATIC_LIBRARIES} PROPERTIES VERSION "${LIBVERSION_BUILD}" SOVERSION "${LIBVERSION_API}" OUTPUT_NAME ${LIBNAME}) if (APPLE AND GEOGRAPHICLIB_PRECISION EQUAL 5) if (GEOGRAPHICLIB_SHARED_LIB) target_link_libraries (${PROJECT_SHARED_LIBRARIES} ${MPFR_LIBRARIES}) endif () if (GEOGRAPHICLIB_STATIC_LIB) target_link_libraries (${PROJECT_STATIC_LIBRARIES} ${MPFR_LIBRARIES}) endif () endif () endif () if (NOT CMAKE_VERSION VERSION_LESS 2.8.11) if (GEOGRAPHICLIB_SHARED_LIB) target_include_directories (${PROJECT_SHARED_LIBRARIES} INTERFACE $ $ $) endif () if (GEOGRAPHICLIB_STATIC_LIB) target_include_directories (${PROJECT_STATIC_LIBRARIES} INTERFACE $ $ $) endif () endif () # Specify where the library is installed, adding it to the export targets install (TARGETS ${PROJECT_SHARED_LIBRARIES} ${PROJECT_STATIC_LIBRARIES} EXPORT targets # A potentially useful option. However it's only supported in recent # versions of cmake (2.8.12 and later?). So comment out for now. # INCLUDES DESTINATION include RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX}) if (MSVC AND PACKAGE_DEBUG_LIBS) if (GEOGRAPHICLIB_SHARED_LIB) install (FILES "${PROJECT_BINARY_DIR}/lib/Debug/${LIBNAME}${CMAKE_DEBUG_POSTFIX}-i.lib" DESTINATION lib${LIB_SUFFIX} CONFIGURATIONS Release) install (PROGRAMS "${PROJECT_BINARY_DIR}/bin/Debug/${LIBNAME}${CMAKE_DEBUG_POSTFIX}.dll" DESTINATION bin CONFIGURATIONS Release) endif () if (GEOGRAPHICLIB_STATIC_LIB) install (FILES "${PROJECT_BINARY_DIR}/lib/Debug/${LIBNAME}${CMAKE_DEBUG_POSTFIX}.lib" DESTINATION lib${LIB_SUFFIX} CONFIGURATIONS Release) endif () endif () if (MSVC AND GEOGRAPHICLIB_SHARED_LIB) if (NOT CMAKE_VERSION VERSION_LESS 3.0) # Suppress 3.0 warnings about use of the LOCATION target property cmake_policy (SET CMP0026 OLD) endif () # Install pdb file for shared library. foreach (_c ${CMAKE_CONFIGURATION_TYPES}) string (TOUPPER ${_c} _C) get_target_property (_P ${PROJECT_SHARED_LIBRARIES} LOCATION_${_C}) get_filename_component (_D ${_P} PATH) get_filename_component (_N ${_P} NAME_WE) set (_PDB ${_D}/${_N}.pdb) install (FILES ${_PDB} DESTINATION bin CONFIGURATIONS ${_c} OPTIONAL) endforeach () endif () # Put the library into a folder in the IDE set_target_properties ( ${PROJECT_SHARED_LIBRARIES} ${PROJECT_STATIC_LIBRARIES} PROPERTIES FOLDER library)