92 lines
2.8 KiB
CMake
92 lines
2.8 KiB
CMake
### Export of a CMake configuration for MiniZinc
|
|
## This allows for "find_package(minizinc)"
|
|
|
|
if(WIN32 AND NOT CYGWIN)
|
|
set(DEF_INSTALL_CMAKE_DIR CMake)
|
|
else()
|
|
set(DEF_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake)
|
|
endif()
|
|
set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR}/libminizinc CACHE PATH "Installation directory for CMake files")
|
|
|
|
if(NOT IS_ABSOLUTE "${INSTALL_CMAKE_DIR}")
|
|
set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}")
|
|
endif()
|
|
|
|
file(RELATIVE_PATH REL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}"
|
|
"${INSTALL_CMAKE_DIR}")
|
|
file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
|
|
"${CMAKE_INSTALL_PREFIX}/include")
|
|
|
|
# Add external (static) dependencies
|
|
if(TARGET minizinc_geas)
|
|
install(
|
|
FILES cmake/modules/FindGeas.cmake
|
|
DESTINATION ${REL_CMAKE_DIR}
|
|
COMPONENT dev
|
|
)
|
|
set(CONF_DEPENDENCIES "${CONF_DEPENDENCIES}find_dependency(Geas)\n")
|
|
endif()
|
|
if(TARGET minizinc_gecode)
|
|
install(
|
|
FILES cmake/modules/FindGecode.cmake cmake/modules/FindMPFR.cmake
|
|
DESTINATION ${REL_CMAKE_DIR}
|
|
COMPONENT dev
|
|
)
|
|
if(GECODE_HAS_GIST)
|
|
set(_CONF_GIST " Gist")
|
|
endif()
|
|
set(CONF_DEPENDENCIES "${CONF_DEPENDENCIES}find_dependency(Gecode 6.0 COMPONENTS Driver Float Int Kernel Minimodel Search Set Support${_CONF_GIST})\n")
|
|
endif()
|
|
if(TARGET minizinc_osicbc)
|
|
install(
|
|
FILES cmake/modules/FindOsiCBC.cmake
|
|
DESTINATION ${REL_CMAKE_DIR}
|
|
COMPONENT dev
|
|
)
|
|
set(CONF_DEPENDENCIES "${CONF_DEPENDENCIES}find_dependency(OsiCBC)\n")
|
|
endif()
|
|
|
|
# Add all targets to the build-tree export set
|
|
export(TARGETS mzn
|
|
FILE "${PROJECT_BINARY_DIR}/libminizincTargets.cmake")
|
|
|
|
# Export the package for use from the build-tree
|
|
# (this registers the build-tree with a global CMake-registry)
|
|
export(PACKAGE libminizinc)
|
|
|
|
# Create the libminizincConfig.cmake and libminizincConfigVersion files
|
|
# ... for the build tree
|
|
set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}")
|
|
configure_file(
|
|
cmake/templates/libminizincConfig.cmake.in
|
|
"${PROJECT_BINARY_DIR}/libminizincConfig.cmake"
|
|
@ONLY
|
|
)
|
|
# ... for the install tree
|
|
set(CONF_INCLUDE_DIRS "\${libminizinc_CMAKE_DIR}/${REL_INCLUDE_DIR}")
|
|
configure_file(
|
|
cmake/templates/libminizincConfig.cmake.in
|
|
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libminizincConfig.cmake"
|
|
@ONLY
|
|
)
|
|
# ... for both
|
|
configure_file(
|
|
cmake/templates/libminizincConfigVersion.cmake.in
|
|
"${PROJECT_BINARY_DIR}/libminizincConfigVersion.cmake"
|
|
@ONLY
|
|
)
|
|
|
|
# Install the libminizincConfig.cmake and libminizincConfigVersion.cmake
|
|
install(
|
|
FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libminizincConfig.cmake" "${PROJECT_BINARY_DIR}/libminizincConfigVersion.cmake"
|
|
DESTINATION ${REL_CMAKE_DIR}
|
|
COMPONENT dev
|
|
)
|
|
|
|
# Install the export set for use with the install-tree
|
|
install(
|
|
EXPORT libminizincTargets
|
|
DESTINATION ${REL_CMAKE_DIR}
|
|
COMPONENT dev
|
|
)
|