Dependencies: - Add dependencies as subprojects instead of prebuild (aka imported target) - add zlib project - Use Cbc as CMake subproject instead of prebuilt - Add log between each subproject - Force gflags namespace to gflags Or-tools: - Rework python.cmake support - Fix missing ortool.util in python (#558) - Try to use static library for ortools::proto pros: can use target_link_libraries to get includes etc... cons: lot of symbols undefined since libortools.so will strip everything -_- - Use add_library(XXX OBJECT) for ortools/* - fix get version from git when using small depth copy - Create Install rule for ortools - Don't create export rules note: since we use subprojects instead of Imported Target, ortools export complained against target deps "that is not in the export set." Update windows support - add swig project - Protobuf force the use of /MD instead of /MT - or-tools use /MD by default - Add missing ws2_32 - Add missing psapi - Update windows disable warnings list - Build Static or-tools on Windows - fix windows export symbols leak issue Signed-off-by: Corentin Le Molgat <corentinl@google.com>
48 lines
1.7 KiB
CMake
48 lines
1.7 KiB
CMake
# Setup SWIG
|
|
find_package(SWIG REQUIRED)
|
|
include(UseSWIG)
|
|
|
|
# Setup Python
|
|
find_package(PythonInterp REQUIRED)
|
|
find_package(PythonLibs REQUIRED)
|
|
|
|
set_property(SOURCE graph.i PROPERTY CPLUSPLUS ON)
|
|
list(APPEND CMAKE_SWIG_FLAGS "-module;pywrapgraph")
|
|
|
|
# outdir for .py file
|
|
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/..)
|
|
# outdir for .so file
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..)
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..)
|
|
# Second, for multi-config builds (e.g. msvc)
|
|
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
|
|
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR}/..)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR}/..)
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR}/..)
|
|
endforeach()
|
|
|
|
if(${CMAKE_VERSION} VERSION_GREATER 3.8.2)
|
|
swig_add_library(pywrapgraph TYPE SHARED LANGUAGE python SOURCES graph.i)
|
|
else()
|
|
swig_add_module(pywrapgraph python graph.i)
|
|
endif()
|
|
|
|
# ${SWIG_MODULE_<name>_REAL_NAME} will resolve to _<name>.so TARGET
|
|
target_include_directories(${SWIG_MODULE_pywrapgraph_REAL_NAME} PRIVATE
|
|
${PYTHON_INCLUDE_DIRS})
|
|
target_link_libraries(${SWIG_MODULE_pywrapgraph_REAL_NAME} PRIVATE
|
|
ortools::ortools ${PYTHON_LIBRARIES})
|
|
if(UNIX)
|
|
if(NOT APPLE)
|
|
set_target_properties(${SWIG_MODULE_pywrapgraph_REAL_NAME} PROPERTIES
|
|
INSTALL_RPATH "$ORIGIN/../../:$ORIGIN")
|
|
else()
|
|
set_target_properties(${SWIG_MODULE_pywrapgraph_REAL_NAME} PROPERTIES
|
|
SUFFIX ".so"
|
|
INSTALL_RPATH "@loader_path/../..:@loader_path")
|
|
set_property(TARGET ${SWIG_MODULE_pywrapgraph_REAL_NAME} APPEND PROPERTY
|
|
LINK_FLAGS "-flat_namespace -undefined suppress")
|
|
endif()
|
|
endif()
|