diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 93966ccf5d060acde6e8445b46d8ad940fbeb19a..a3befbf2a3a67cb00914dbc48594473891f48262 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,6 +20,7 @@ linux: - linux variables: FTL_LIB: ../../build/SDK/C/libftl-dev.so + LD_LIBRARY_PATH: /opt/pylon/lib/ # before_script: # - export DEBIAN_FRONTEND=noninteractive # - apt-get update -qq && apt-get install -y -qq g++ cmake git @@ -27,8 +28,9 @@ linux: script: - mkdir build - cd build - - cmake .. -DWITH_OPTFLOW=TRUE -DUSE_CPPCHECK=FALSE -DBUILD_CALIBRATION=TRUE -DWITH_CERES=TRUE -DCMAKE_BUILD_TYPE=Release + - cmake .. -DWITH_OPTFLOW=TRUE -DUSE_CPPCHECK=FALSE -DBUILD_CALIBRATION=TRUE -DWITH_CERES=TRUE -DCMAKE_BUILD_TYPE=Release -DCPACK_GENERATOR=DEB - make + - make package - ctest --output-on-failure - cd ../SDK/Python - python3 -m unittest discover test diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f2c96fb1656f40babca3c38cf2808f8906455c6..96fb65323bbab37cd9bc4c9ad3b99b28bc0466ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,7 @@ project (ftl.utu.fi VERSION 0.0.4) include(GNUInstallDirs) include(CTest) + enable_testing() option(WITH_OPTFLOW "Use NVIDIA Optical Flow if available" OFF) @@ -119,7 +120,7 @@ endif() if (WITH_OPUS) find_library( OPUS_LIBRARY NAMES opus PATHS ${OPUS_DIR} PATH_SUFFIXES lib) - + if (OPUS_LIBRARY) find_path( OPUS_INCLUDE NAMES opus/opus.h) @@ -184,7 +185,7 @@ if(${CMAKE_VERSION} VERSION_GREATER "3.12.0") cmake_policy(SET CMP0074 NEW) endif() -set(CMAKE_CXX_STANDARD 17) # For PCL/VTK https://github.com/PointCloudLibrary/pcl/issues/2686 +set(CMAKE_CXX_STANDARD 17) set(HAVE_OPENCV TRUE) # Readline library is not required on Windows @@ -487,17 +488,9 @@ configure_file(${CMAKE_SOURCE_DIR}/components/common/cpp/src/config.cpp.in ${CMAKE_SOURCE_DIR}/components/common/cpp/src/config.cpp ) -# For issue #17 -# https://gitlab.kitware.com/cmake/cmake/issues/16915#note_456382 -if ( TARGET Qt5::Core ) - get_property( core_options TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_OPTIONS ) - string( REPLACE "-fPIC" "" new_core_options "${core_options}" ) - set_property( TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_OPTIONS ${new_core_options} ) - set_property( TARGET Qt5::Core PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE "ON" ) - set( CMAKE_CXX_COMPILE_OPTIONS_PIE "-fPIC" ) -endif() - if (WIN32) # TODO(nick) Should do based upon compiler (VS) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${VS_STARTUP_PROJECT}) set_property(TARGET ftl-vision PROPERTY VS_DEBUGGER_WORKING_DIRECTORY ${VS_DEBUG_WORKING_DIRECTORY}) endif() + +include(ftl_CPack) diff --git a/applications/gui/CMakeLists.txt b/applications/gui/CMakeLists.txt index 8cd06d328bef06845dd5626feeaff340d6a26529..8b552cb9368844a2d4c5ef7776de9d8adc8d22a4 100644 --- a/applications/gui/CMakeLists.txt +++ b/applications/gui/CMakeLists.txt @@ -28,6 +28,7 @@ add_definitions(${NANOGUI_EXTRA_DEFS}) include_directories(${NANOGUI_EXTRA_INCS}) add_executable(ftl-gui ${GUISRC}) +install(TARGETS ftl-gui DESTINATION bin COMPONENT gui) target_include_directories(ftl-gui PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> diff --git a/applications/vision/CMakeLists.txt b/applications/vision/CMakeLists.txt index a40126b95f7cc9234078528a0f59263eecf0f802..4c2674d8da075a997792027591260e5bd09bd5b1 100644 --- a/applications/vision/CMakeLists.txt +++ b/applications/vision/CMakeLists.txt @@ -10,6 +10,7 @@ set(CVNODESRC ) add_executable(ftl-vision ${CVNODESRC}) +install(TARGETS ftl-vision DESTINATION bin COMPONENT vision) target_include_directories(ftl-vision PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> diff --git a/cmake/ftl_CPack.cmake b/cmake/ftl_CPack.cmake new file mode 100644 index 0000000000000000000000000000000000000000..b496c30bee1bb4a6cfcbe0eecd8c04db3ba3708e --- /dev/null +++ b/cmake/ftl_CPack.cmake @@ -0,0 +1,32 @@ +# use build date as patch version +string(TIMESTAMP BUILD_TIME "%Y%m%d") +set(CPACK_PACKAGE_VERSION_PATCH "${BUILD_TIME}") + +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "UTU Future Tech Lab") +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) +set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) +set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") +set(CPACK_DEB_PACKAGE_COMPONENT ON) +set(CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous") + +macro(deb_append_dependency DEPENDS) + if ("${CPACK_DEBIAN_PACKAGE_DEPENDS}" STREQUAL "") + set(CPACK_DEBIAN_PACKAGE_DEPENDS "${DEPENDS}") + else() + set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, ${DEPENDS}") + endif() +endmacro() + +if (HAVE_PYLON) + deb_append_dependency("pylon (>= 6.1.1)") + set(ENV{LD_LIBRARY_PATH} "=/opt/pylon/lib/") +endif() + +if(WIN32) + message(INFO "Copying DLLs: OpenCV") + file(GLOB WINDOWS_LIBS "${OpenCV_INSTALL_PATH}/${OpenCV_ARCH}/${OpenCV_RUNTIME}/bin/*.dll") + install(FILES ${WINDOWS_LIBS} DESTINATION bin) + set(CPACK_GENERATOR "WiX") +endif() + +include(CPack) diff --git a/lib/libsgm/src/CMakeLists.txt b/lib/libsgm/src/CMakeLists.txt index 89e5035877010c146dd4d0d988b263a9ccddf9df..a338f8380db8656ca4c3f1d84a9a8d119b834df4 100644 --- a/lib/libsgm/src/CMakeLists.txt +++ b/lib/libsgm/src/CMakeLists.txt @@ -31,12 +31,12 @@ install( ) install( - DIRECTORY ${CMAKE_SOURCE_DIR}/include + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../include DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp" ) install( - FILES ${CMAKE_SOURCE_DIR}/FindLibSGM.cmake + FILES ${CMAKE_CURRENT_SOURCE_DIR}/../FindLibSGM.cmake DESTINATION ${CMAKE_INSTALL_PREFIX} )