299 lines
8.0 KiB
CMake
299 lines
8.0 KiB
CMake
|
|
# Nous voulons un cmake "récent" pour utiliser les dernières fonctionnalités.
|
|
cmake_minimum_required(VERSION 3.20)
|
|
|
|
# Nom du projet.
|
|
set(ORDO OrdonnancementCorrectif)
|
|
|
|
set(INSGEN InstanceGenerator)
|
|
|
|
set(TESTS Tests)
|
|
|
|
project(${ORDO})
|
|
|
|
# Génération de la liste des fichiers sources.
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Ordo
|
|
src/OrdoCorr/main.cpp
|
|
)
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Insgen
|
|
src/InstanceGenerator/main.cpp
|
|
)
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Gen
|
|
src/InstanceGenerator/Generator/*
|
|
)
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Interface
|
|
src/OrdoCorr/Interface/*
|
|
)
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Solver
|
|
src/OrdoCorr/Solver/*
|
|
)
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Config
|
|
src/General/Configuration/*
|
|
)
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Model
|
|
src/General/Model/*
|
|
)
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Logs
|
|
src/General/Logs/*
|
|
)
|
|
|
|
file(GLOB_RECURSE
|
|
SRCS_Tester
|
|
src/OrdoCorr/Tester/*
|
|
)
|
|
|
|
# ---------------------------------------
|
|
|
|
|
|
|
|
# ------- Inclusion de JSONfMC++ --------
|
|
# JSONfMC++ Lib pour gestion fichier JSON, en mode header only.
|
|
if(WIN32)
|
|
set(JSONlib_DIR ./lib/CMake/Windows)
|
|
else()
|
|
set(JSONlib_DIR ./lib/CMake/Linux)
|
|
endif()
|
|
|
|
find_package(JSONlib REQUIRED)
|
|
|
|
if(JSONlib_FOUND)
|
|
message("lib JSONFMC++ Trouvé")
|
|
else()
|
|
message("lib JSONFMC++ Introuvable")
|
|
endif()
|
|
# ---------------------------------------
|
|
|
|
|
|
|
|
# ------- Inclusion de Boost Graph Library --------
|
|
# Boost Graph Library pour gestion des graphes en mode header only.
|
|
if(WIN32)
|
|
set(BOOSTGRAPHlib_DIR ./lib/CMake/Windows)
|
|
else()
|
|
set(BOOSTGRAPHlib_DIR ./lib/CMake/Linux)
|
|
endif()
|
|
|
|
find_package(BOOSTGRAPHlib REQUIRED)
|
|
|
|
if(BOOSTGRAPHlib_FOUND)
|
|
message("lib Boost Graph Trouvé")
|
|
else()
|
|
message("lib Boost Graph Introuvable")
|
|
endif()
|
|
# ---------------------------------------
|
|
|
|
# ------- Inclusion de httplib --------
|
|
# httplib Lib pour gestion des requetes web en mode header only.
|
|
if(WIN32)
|
|
set(HTTPlib_DIR ./lib/CMake/Windows)
|
|
else()
|
|
set(HTTPlib_DIR ./lib/CMake/Linux)
|
|
endif()
|
|
|
|
find_package(HTTPlib REQUIRED)
|
|
|
|
if(HTTPlib_FOUND)
|
|
message("lib HTTP Trouvé")
|
|
else()
|
|
message("lib HTTP Introuvable")
|
|
endif()
|
|
# ---------------------------------------
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/CMake/Linux/")
|
|
find_package(GUROBI REQUIRED)
|
|
|
|
|
|
set_property(GLOBAL PROPERTY DEBUG_CONFIGURATIONS "Debug")
|
|
|
|
# Chemin executable
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/${CMAKE_BUILD_TYPE}")
|
|
|
|
# On indique que l'on veut un exécutable nommé PROJECT compilé à partir des fichiers décrits par les variables SRCS et HEADERS.
|
|
add_executable(${ORDO} ${SRCS_Ordo})
|
|
add_executable(${INSGEN} ${SRCS_Insgen})
|
|
|
|
|
|
add_library(Interface STATIC ${SRCS_Interface})
|
|
add_library(Data STATIC ${SRCS_Model})
|
|
add_library(Solver STATIC ${SRCS_Solver})
|
|
add_library(Configuration STATIC ${SRCS_Config})
|
|
add_library(Logs STATIC ${SRCS_Logs})
|
|
add_library(Generator STATIC ${SRCS_Gen})
|
|
add_library(Tester STATIC ${SRCS_Tester})
|
|
|
|
|
|
add_dependencies(${ORDO} Interface Configuration Logs Data Solver Tester)
|
|
add_dependencies(Interface Configuration Logs Data Solver Tester)
|
|
add_dependencies(Solver Logs Configuration Data)
|
|
add_dependencies(Data Logs Configuration)
|
|
add_dependencies(Tester Solver Data Logs Configuration)
|
|
|
|
add_dependencies(${INSGEN} Data Logs Generator)
|
|
|
|
|
|
|
|
set_property(TARGET ${ORDO} PROPERTY CXX_STANDARD 17)
|
|
set_property(TARGET Interface PROPERTY CXX_STANDARD 17)
|
|
set_property(TARGET Data PROPERTY CXX_STANDARD 17)
|
|
set_property(TARGET Solver PROPERTY CXX_STANDARD 17)
|
|
set_property(TARGET Configuration PROPERTY CXX_STANDARD 17)
|
|
set_property(TARGET Logs PROPERTY CXX_STANDARD 17)
|
|
set_property(TARGET Tester PROPERTY CXX_STANDARD 17)
|
|
|
|
set_property(TARGET ${INSGEN} PROPERTY CXX_STANDARD 17)
|
|
set_property(TARGET Generator PROPERTY CXX_STANDARD 17)
|
|
|
|
|
|
|
|
# Fichier include
|
|
# CPLEX
|
|
# JSONFMCPP
|
|
include_directories(${JSONFMCPP_INCLUDE_DIRS})
|
|
include_directories(${HTTPLIB_INCLUDE_DIRS})
|
|
include_directories(${BOOSTGRAPH_INCLUDE_DIRS})
|
|
#cppunit
|
|
|
|
include_directories(${GUROBI_INCLUDE_DIRS})
|
|
|
|
|
|
# Fichier lib
|
|
|
|
|
|
target_link_libraries(${ORDO}
|
|
debug Interface
|
|
optimized Interface
|
|
)
|
|
|
|
target_link_libraries(${INSGEN}
|
|
debug Generator
|
|
optimized Generator
|
|
)
|
|
|
|
target_link_libraries(Interface
|
|
debug Solver
|
|
optimized Solver
|
|
debug Tester
|
|
optimized Tester
|
|
)
|
|
|
|
target_link_libraries(Generator
|
|
debug Data
|
|
optimized Data
|
|
)
|
|
|
|
target_link_libraries(Solver
|
|
debug ${CMAKE_DL_LIBS}
|
|
optimized ${CMAKE_DL_LIBS}
|
|
optimized ${GUROBI_CXX_LIBRARY}
|
|
debug ${GUROBI_CXX_DEBUG_LIBRARY}
|
|
optimized ${GUROBI_LIBRARY}
|
|
debug ${GUROBI_LIBRARY}
|
|
debug Data
|
|
optimized Data
|
|
)
|
|
|
|
target_link_libraries(Tester
|
|
debug Solver
|
|
optimized Solver
|
|
)
|
|
|
|
target_link_libraries(Data
|
|
debug Configuration
|
|
optimized Configuration
|
|
debug Logs
|
|
optimized Logs
|
|
)
|
|
|
|
# Fichier dll sous windows
|
|
if(WIN32)
|
|
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
|
|
endif()
|
|
|
|
# Paramètre de compilation
|
|
if (UNIX)
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
|
|
set(CMAKE_CXX_FLAGS "-Wall -Wno-deprecated -Wno-write-strings -Wno-maybe-uninitialized -pthread")
|
|
endif ()
|
|
|
|
foreach(source IN LISTS SRCS_Ordo)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
foreach(source IN LISTS SRCS_Interface)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
foreach(source IN LISTS SRCS_Solver)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
foreach(source IN LISTS SRCS_Config)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
foreach(source IN LISTS SRCS_Model)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
foreach(source IN LISTS SRCS_Logs)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
foreach(source IN LISTS SRCS_Insgen)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
foreach(source IN LISTS SRCS_Gen)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
foreach(source IN LISTS SRCS_Tester)
|
|
get_filename_component(source_path "${source}" PATH)
|
|
STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path})
|
|
string(REPLACE "/" "\\" source_path_msvc "${source_path}")
|
|
source_group("${source_path_msvc}" FILES "${source}")
|
|
endforeach()
|
|
|
|
|
|
message(STATUS "Tree reorganized")
|
|
|