1 cmake_minimum_required(VERSION 3.11)
3 project(Clp LANGUAGES C CXX)
5 set(PROJECT_VERSION 1.16.11)
6 set(PROJECT_VERSION_MAJOR 1)
7 set(PROJECT_VERSION_MINOR 16)
8 set(PROJECT_VERSION_PATCH 11)
10 set(CMAKE_CXX_STANDARD 14)
12 set(INSTALL_BIN_DIR "bin" CACHE PATH "Path where exe and dll will be installed")
13 set(INSTALL_LIB_DIR "lib" CACHE PATH "Path where lib will be installed")
14 set(INSTALL_INCLUDE_DIR "include/Coin" CACHE PATH "Path where headers will be installed")
15 set(INSTALL_CMAKE_DIR "share/clp" CACHE PATH "Path where cmake configs will be installed")
17 # Make relative paths absolute (needed later on)
18 set(RELATIVE_INSTALL_INCLUDE_DIR ${INSTALL_INCLUDE_DIR})
19 foreach(p LIB BIN INCLUDE CMAKE)
20 set(var INSTALL_${p}_DIR)
21 if(NOT IS_ABSOLUTE "${${var}}")
22 set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
29 "${CMAKE_CXX_FLAGS} /bigobj /MP /wd4996 /wd4819 /wd4251 /wd4267 /wd4244 /wd4275"
36 "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override -Wno-unused-command-line-argument -Wno-unused-result -Wno-exceptions"
38 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9"
39 CACHE STRING "Minimum OS X deployment version")
42 find_package(CoinUtils REQUIRED)
43 find_package(Osi REQUIRED)
51 Clp/src/ClpCholeskyMumps.cpp
52 Clp/src/ClpCholeskyUfl.cpp
53 Clp/src/ClpCholeskyWssmp.cpp
54 Clp/src/ClpCholeskyWssmpKKT.cpp
57 Clp/src/ClpCholeskyMumps.hpp
58 Clp/src/ClpCholeskyUfl.hpp
59 Clp/src/ClpCholeskyWssmp.hpp
60 Clp/src/ClpCholeskyWssmpKKT.hpp
64 list(REMOVE_ITEM CLP_SOURCES ${CLP_REMOVE})
66 add_library(${PROJECT_NAME} ${CLP_SOURCES})
68 target_include_directories(${PROJECT_NAME}
70 $<INSTALL_INTERFACE:${RELATIVE_INSTALL_INCLUDE_DIR}>
71 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Clp/src/>
72 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Clp/src/OsiClp>)
75 target_compile_definitions(${PROJECT_NAME} PRIVATE _CRT_SECURE_NO_WARNINGS)
77 target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_CMATH)
78 target_compile_definitions(${PROJECT_NAME} PUBLIC COIN_HAS_CLP)
80 target_link_libraries(${PROJECT_NAME} PRIVATE Coin::CoinUtils Coin::Osi)
82 install(DIRECTORY Clp/src/
83 DESTINATION ${INSTALL_INCLUDE_DIR}
87 PATTERN "config_default.h" EXCLUDE)
89 install(DIRECTORY Clp/src/OsiClp/
90 DESTINATION ${INSTALL_INCLUDE_DIR}
94 PATTERN "config_default.h" EXCLUDE)
96 install(TARGETS ${PROJECT_NAME}
97 EXPORT "${PROJECT_NAME}Targets"
98 LIBRARY DESTINATION lib
99 ARCHIVE DESTINATION lib
100 RUNTIME DESTINATION bin)
102 include(CMakePackageConfigHelpers)
104 set(version_config "${CMAKE_CURRENT_BINARY_DIR}/temp/${PROJECT_NAME}ConfigVersion.cmake")
105 set(project_config "${CMAKE_CURRENT_BINARY_DIR}/temp/${PROJECT_NAME}Config.cmake")
106 set(namespace "Coin::")
108 write_basic_package_version_file("${version_config}"
109 COMPATIBILITY SameMajorVersion)
111 configure_package_config_file("Config.cmake.in"
114 "${INSTALL_CMAKE_DIR}")
116 install(FILES "${project_config}" "${version_config}"
117 DESTINATION "${INSTALL_CMAKE_DIR}")
119 install(EXPORT "${PROJECT_NAME}Targets"
120 NAMESPACE "${namespace}"
121 DESTINATION "${INSTALL_CMAKE_DIR}")