Skip to content
Snippets Groups Projects
Commit f1415dc3 authored by Quentin Leblanc's avatar Quentin Leblanc Committed by Alexis Durgnat
Browse files

Update of install process

parent 494cf1d8
No related branches found
No related tags found
1 merge request!1Update of install process
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.1)
project(sandbox_wrapper)
set(LIBNAME "sandbox_wrapper")
set(LIB_MINOR_VERS "0.0")
set(LIB_MAJOR_VERS "1")
set(LIB_VERS "${LIB_MAJOR_VERS}.${LIB_MINOR_VERS}")
set(LIB_FULL_NAME "${LIBNAME}.so.${LIB_VERS}")
set(LIBSANDBOX_DIR "" CACHE PATH "Path to LIBSANDBOX Directory")
set(BUILD_DIR "" CACHE PATH "Path in the LIBSANDBOX Directory for the built .so file")
if(NOT LIBSANDBOX_DIR)
message(FATAL_ERROR "LIBSANDBOX Directory must be passed with -DLIBSANDBOX_DIR=...")
endif()
if(NOT BUILD_DIR)
message(FATAL_ERROR "BUILD_DIR Directory must be passed with -DBUILD_DIR=...")
endif()
set(BUILD_DIR "${LIBSANDBOX_DIR}${BUILD_DIR}")
message(STATUS "LIBSANDBOX located at: ${LIBSANDBOX_DIR}")
message(STATUS "Build of LIBSANDBOX located at ${BUILD_DIR}")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(/usr/include/x86_64-linux-gnu/python3.6m)
include_directories(/usr/include/python3.6m)
include_directories(/home/frog/Prog/Projects/Sandbox/lib/ar_sandbox_lib/inc)
include_directories(inc ${OpenCV_INCLUDE_DIRS})
find_package(realsense2 REQUIRED )
include_directories(inc ${realsense_INCLUDE_DIR})
find_package(yaml-cpp REQUIRED)
include_directories(inc ${YAML_CPP_INCLUDE_DIRS})
find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
include_directories(inc ${Python3_INCLUDE_DIRS})
include_directories(inc ${LIBSANDBOX_DIR}/inc)
set(PYBIND11_FINDPYTHON ON)
find_package(pybind11 CONFIG REQUIRED)
include_directories(inc ${pybind11_INCLUDE_DIR})
# pybind11_add_module(sandbox_wrapper cpp/sandbox_wrapper.cpp)
file(GLOB_RECURSE SOURCES
cpp/*.cpp
)
add_library(${LIBNAME} SHARED ${SOURCES})
set_target_properties(${LIBNAME} PROPERTIES OUTPUT_NAME ${LIBNAME} VERSION ${LIB_VERS} SOVERSION ${LIB_MAJOR_VERS})
target_link_libraries(${LIBNAME} ${OpenCV_LIBS})
target_link_libraries(${LIBNAME} ${realsense_LIBS})
target_link_libraries(${LIBNAME} -lrealsense2)
target_link_libraries(${LIBNAME} ${YAML_CPP_LIBRARIES})
target_link_libraries(${LIBNAME} -lyaml-cpp)
include_directories(${LIBNAME} ${BUILD_DIR})
target_link_libraries(${LIBNAME} "${BUILD_DIR}/libsandbox.so.1.0.0")
target_compile_options(${LIBNAME} PRIVATE
-std=c++11 # Utilisation de C++11
-Wall # Affichage des avertissements classiques
-Wextra # Avertissements supplémentaires
-g # Ajout des symboles de debug
-fPIC # Position Indépendante du Code (obligatoire pour les bibliothèques partagées)
-Ilib
)
# Création des liens symboliques après la compilation
add_custom_command(TARGET ${LIBNAME} POST_BUILD
WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
COMMENT "Copie de ${LIB_FULL_NAME} dans src/ar_sandbox/wrapper"
COMMAND ${CMAKE_COMMAND}
ARGS -E copy "lib${LIB_FULL_NAME}" ../src/ar_sandbox/wrapper/"${LIBNAME}.so"
)
include_directories(/usr/local/lib/python3.6/dist-packages/pybind11/share/cmake/pybind11)
find_package(pybind11 REQUIRED)
pybind11_add_module(sandbox_wrapper ./cpp/sandbox_wrapper.cpp)
add_custom_command(TARGET ${LIBNAME} POST_BUILD
WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
COMMENT "Création du module Python dans le répertoire dist/"
COMMAND python -m build .. # Création du module python en prenant en compte que cmake est exécuté dans un répertoir build situé à la racine du projet.
)
include_directories(/home/frog/Prog/Projects/Sandbox/lib/ar_sandbox_lib/build/)
target_link_libraries(sandbox_wrapper PRIVATE ${OpenCV_LIBS})
target_link_libraries(sandbox_wrapper PRIVATE /home/frog/Prog/Projects/Sandbox/lib/ar_sandbox_lib/build/libsandbox.so.1.0.0 -lrealsense2 -lyaml-cpp)
# Installation de la bibliothèque et des fichiers d'en-tête
install(TARGETS ${LIBNAME} DESTINATION lib)
install(DIRECTORY inc/ DESTINATION include)
OPENCVFLAG=`pkg-config --libs --cflags opencv3`
CAMERAFLAG=-lrealsense2
YAMLFLAG=-I/usr/local/include -L/usr/local/lib -lyaml-cpp
DEP_SANDBOX=$(OPENCVFLAG) $(CAMERAFLAG) $(YAMLFLAG)
SANDBOX=-I/home/quentin/Documents/HEPIA/ar_sandbox_lib/inc -L/home/quentin/Documents/HEPIA/ar_sandbox_lib/build_test/lib -lsandbox
CFLAGS=-std=c++11 -Wall -Wextra -g -Ilib -fPIC
WRAPPER_NAME=sandbox_wrapper.so
all: sandbox_wrapper.so
sandbox_wrapper: sandbox_wrapper.o
c++ -o $@ $^ $(shell python3-config --libs) $(CFLAGS) $(SANDBOX) $(DEP_SANDBOX) $(LDFLAGS)
sandbox_wrapper.so: sandbox_wrapper.o
c++ -O3 -shared $(CFLAGS) $(shell python3 -m pybind11 --includes) $^ -o $(WRAPPER_NAME)$(python3-config --extension-suffix) $(DEP_SANDBOX) $(SANDBOX)
sandbox_wrapper.o: sandbox_wrapper.cpp
c++ -c $^ -o $@ -I/usr/include/python3.13 $(python3 -m pybind11 --includes) $(CFLAGS) $(SANDBOX) $(DEP_SANDBOX)
clean:
rm *.so *.o
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment