Avoid the build of cgal library in header only mode

This commit is contained in:
Guillaume Damiand 2015-10-14 14:52:26 +02:00
parent 6d55c3b140
commit c5bfaf53d0
1 changed files with 49 additions and 39 deletions

View File

@ -26,8 +26,8 @@ function (collect_cgal_library LIBRARY_NAME ADDITIONAL_FILES)
set(CGAL_LIB_PREFIX "lib")
endif()
set(RELEASE_MANGLED_NAME "${CGAL_LIB_PREFIX}${LIBRARY_NAME}-${CGAL_TOOLSET}-mt-${CGAL_FULL_VERSION}" )
set(DEBUG_MANGLED_NAME "${CGAL_LIB_PREFIX}${LIBRARY_NAME}-${CGAL_TOOLSET}-mt-gd-${CGAL_FULL_VERSION}" )
set(RELEASE_MANGLED_NAME "${CGAL_LIB_PREFIX}${LIBRARY_NAME}-${CGAL_TOOLSET}-mt-${CGAL_FULL_VERSION}" )
set(DEBUG_MANGLED_NAME "${CGAL_LIB_PREFIX}${LIBRARY_NAME}-${CGAL_TOOLSET}-mt-gd-${CGAL_FULL_VERSION}" )
if(CGAL_BUILD_SHARED_LIBS AND WIN32)
configure_file(${CGAL_INSTALLATION_PACKAGE_DIR}/src/CGAL_libs_verinfo.rc.in ${LIBRARY_NAME}_verinfo.rc @ONLY)
@ -36,24 +36,28 @@ function (collect_cgal_library LIBRARY_NAME ADDITIONAL_FILES)
set(rc_file )
endif()
add_library (${LIBRARY_NAME}
${CMAKE_CURRENT_BINARY_DIR}/all_files.cpp
${rc_file}
${ADDITIONAL_FILES})
if(CGAL_SOVERSION AND CGAL_SONAME_VERSION)
set_target_properties(${LIBRARY_NAME} PROPERTIES
VERSION "${CGAL_SOVERSION}"
SOVERSION "${CGAL_SONAME_VERSION}")
if (NOT ENABLE_HEADER_ONLY)
add_library (${LIBRARY_NAME}
${CMAKE_CURRENT_BINARY_DIR}/all_files.cpp
${rc_file}
${ADDITIONAL_FILES})
if(CGAL_SOVERSION AND CGAL_SONAME_VERSION)
set_target_properties(${LIBRARY_NAME} PROPERTIES
VERSION "${CGAL_SOVERSION}"
SOVERSION "${CGAL_SONAME_VERSION}")
endif()
endif()
if(CGAL_AUTO_LINK_ENABLED)
set_target_properties( ${LIBRARY_NAME} PROPERTIES
OUTPUT_NAME_DEBUG "${DEBUG_MANGLED_NAME}"
OUTPUT_NAME_RELEASE "${RELEASE_MANGLED_NAME}"
OUTPUT_NAME_MINSIZEREL "${RELEASE_MANGLED_NAME}"
OUTPUT_NAME_RELWITHDEBINFO "${RELEASE_MANGLED_NAME}"
)
if (NOT ENABLE_HEADER_ONLY)
set_target_properties( ${LIBRARY_NAME} PROPERTIES
OUTPUT_NAME_DEBUG "${DEBUG_MANGLED_NAME}"
OUTPUT_NAME_RELEASE "${RELEASE_MANGLED_NAME}"
OUTPUT_NAME_MINSIZEREL "${RELEASE_MANGLED_NAME}"
OUTPUT_NAME_RELWITHDEBINFO "${RELEASE_MANGLED_NAME}"
)
endif()
if ( HAS_CFG_INTDIR )
add_custom_command(TARGET ${LIBRARY_NAME} POST_BUILD COMMAND if exist \"$(TargetDir)$(TargetName).dll\" copy /Y \"$(TargetDir)$(TargetName).dll\" \"$(TargetDir)..\" )
add_custom_command(TARGET ${LIBRARY_NAME} POST_BUILD COMMAND if exist \"$(TargetDir)$(TargetName).pdb\" copy /Y \"$(TargetDir)$(TargetName).pdb\" \"$(TargetDir)..\" )
@ -61,20 +65,23 @@ function (collect_cgal_library LIBRARY_NAME ADDITIONAL_FILES)
endif()
endif()
install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Exports
RUNTIME DESTINATION "${CGAL_INSTALL_BIN_DIR}"
LIBRARY DESTINATION "${CGAL_INSTALL_LIB_DIR}"
ARCHIVE DESTINATION "${CGAL_INSTALL_LIB_DIR}")
install(EXPORT ${LIBRARY_NAME}Exports
DESTINATION "${CGAL_INSTALL_CMAKE_DIR}"
NAMESPACE CGAL::)
# We have to call configure_file twice to force double expansion of variables.
configure_file("${CGAL_MODULES_DIR}/CGALLibConfig.cmake.in"
"${CMAKE_BINARY_DIR}/${LIBRARY_NAME}LibConfig.cmake" @ONLY)
configure_file("${CMAKE_BINARY_DIR}/${LIBRARY_NAME}LibConfig.cmake"
"${CMAKE_BINARY_DIR}/${LIBRARY_NAME}LibConfig.cmake" @ONLY)
install(FILES "${CMAKE_BINARY_DIR}/${LIBRARY_NAME}LibConfig.cmake" DESTINATION ${CGAL_INSTALL_CMAKE_DIR})
if (NOT ENABLE_HEADER_ONLY)
install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Exports
RUNTIME DESTINATION "${CGAL_INSTALL_BIN_DIR}"
LIBRARY DESTINATION "${CGAL_INSTALL_LIB_DIR}"
ARCHIVE DESTINATION "${CGAL_INSTALL_LIB_DIR}")
install(EXPORT ${LIBRARY_NAME}Exports
DESTINATION "${CGAL_INSTALL_CMAKE_DIR}"
NAMESPACE CGAL::)
# We have to call configure_file twice to force double expansion of variables.
configure_file("${CGAL_MODULES_DIR}/CGALLibConfig.cmake.in"
"${CMAKE_BINARY_DIR}/${LIBRARY_NAME}LibConfig.cmake" @ONLY)
configure_file("${CMAKE_BINARY_DIR}/${LIBRARY_NAME}LibConfig.cmake"
"${CMAKE_BINARY_DIR}/${LIBRARY_NAME}LibConfig.cmake" @ONLY)
install(FILES "${CMAKE_BINARY_DIR}/${LIBRARY_NAME}LibConfig.cmake" DESTINATION ${CGAL_INSTALL_CMAKE_DIR})
endif()
endfunction()
function( configure_component DIR COMPONENT )
@ -116,8 +123,8 @@ add_subdirectory(CGAL)
# search libs
set(CGAL_CONFIGURED_LIBRARIES "")
foreach(package ${CGAL_CONFIGURED_PACKAGES})
foreach(package ${CGAL_CONFIGURED_PACKAGES})
file(GLOB CONFIGURED_LIBS_IN_PACKAGE ${package}/src/CGAL_*/CMakeLists.txt)
foreach (libconfigfile ${CONFIGURED_LIBS_IN_PACKAGE})
get_filename_component(CGAL_CONFIGURED_LIBRARY_NAME ${libconfigfile} PATH)
@ -133,8 +140,8 @@ foreach(package ${CGAL_CONFIGURED_PACKAGES})
cache_set(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_DEFINITIONS "" )
cache_set(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_INCLUDE_DIRS "" )
cache_set(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_LIBRARIES "" )
cache_set(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_LIBRARIES_DIRS "" )
if (${CGAL_CONFIGURED_LIBRARY_NAME} STREQUAL "CGAL_Core")
cache_set(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_LIBRARIES_DIRS "" )
if (${CGAL_CONFIGURED_LIBRARY_NAME} STREQUAL "CGAL_Core")
if (NOT CGAL_NO_CORE)
configure_component( ${package}/src/${CGAL_CONFIGURED_LIBRARY_NAME} ${CGAL_CONFIGURED_LIBRARY_NAME})
else(NOT CGAL_NO_CORE)
@ -149,22 +156,25 @@ foreach(package ${CGAL_CONFIGURED_PACKAGES})
cache_get(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_DEFINITIONS )
cache_get(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_INCLUDE_DIRS )
cache_get(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_LIBRARIES )
cache_get(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_LIBRARIES_DIRS)
cache_get(${CGAL_CONFIGURED_LIBRARY_NAME}_3RD_PARTY_LIBRARIES_DIRS)
else()
else()
list(APPEND CGAL_CONFIGURED_LIBRARIES CGAL)
endif()
endforeach()
endforeach()
if (NOT CGAL_CONFIGURED_LIBRARIES)
if (NOT CGAL_CONFIGURED_LIBRARIES)
message(FATAL_ERROR "No component library in configured packages found. Please fix package-file.")
endif()
list(REMOVE_DUPLICATES CGAL_CONFIGURED_LIBRARIES)
list(SORT CGAL_CONFIGURED_LIBRARIES)
if (ENABLE_HEADER_ONLY)
set(CGAL_CONFIGURED_LIBRARIES "" )
endif()
cache_set(CGAL_CONFIGURED_LIBRARIES "${CGAL_CONFIGURED_LIBRARIES}")
# CGAL_CONFIGURED_LIBRARIES is a virtually useless variable, because