diff --git a/CMakeLists.txt b/CMakeLists.txt index 225cb9a..01805de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,7 +266,10 @@ ADD_FEATURE_INFO(SSE USE_SSE "SSE instructions support") ADD_FEATURE_INFO(WErrors USE_WERROR "Warnings as errors") ADD_SUBDIRECTORY(lib) -ADD_SUBDIRECTORY(modules) + +IF(${BUILD_TOOLS} OR ${BUILD_APP}) + ADD_SUBDIRECTORY(modules) +ENDIF() IF(${BUILD_TOOLS}) ADD_SUBDIRECTORY(tools) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 2769980..c63557c 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -3,8 +3,8 @@ # INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/external ${CMAKE_CURRENT_SOURCE_DIR}/dialog ${CMAKE_CURRENT_SOURCE_DIR}/docks - ${CMAKE_CURRENT_SOURCE_DIR}/widgets + ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/external ${CMAKE_CURRENT_SOURCE_DIR}/dialog + ${CMAKE_CURRENT_SOURCE_DIR}/docks ${CMAKE_CURRENT_SOURCE_DIR}/widgets ) OPTION(USE_QTDBUS "Build with QtDBus" ON) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 98a68ae..84a2323 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -3,8 +3,10 @@ # INCLUDE(GNUInstallDirs) +SET(CMAKE_EXPORT_PACKAGE_REGISTRY ON) +EXPORT(PACKAGE MyLib) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/..) SET(Calyp_Lib_Frame_SRCS CalypPixel.cpp PixelFormats.h PixelFormats.cpp CalypFrame.h CalypFrame.cpp CalypPlane.h) @@ -24,7 +26,6 @@ SET(Calyp_Lib_Modules_SRCS CalypOptions.h CalypOptions.cpp) SET(Calyp_Lib_SRCS CalypLib.h CalypDefs.h ${Calyp_Lib_Frame_SRCS} ${Calyp_Lib_Stream_SRCS} ${Calyp_Lib_OptionParser_SRCS} ${Calyp_Lib_Modules_SRCS}) -LIST(APPEND CMAKE_CFG_LINKER_LIBSS ${PROJECT_LIBRARY}) LIST(APPEND CMAKE_CFG_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) IF(USE_FFMPEG) @@ -33,6 +34,10 @@ IF(USE_FFMPEG) LIST(APPEND CMAKE_CFG_LINKER_LIBSS ${FFMPEG_LIBRARIES}) LIST(APPEND CMAKE_CFG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS}) + + INCLUDE_DIRECTORIES(${FFMPEG_INCLUDE_DIRS}) + + LIST(APPEND CALYP_LIB_LINKER_DEPENDENCIES ${FFMPEG_LIBRARIES}) ENDIF() IF(USE_OPENCV) @@ -43,13 +48,28 @@ IF(USE_OPENCV) LIST(APPEND CMAKE_CFG_LINKER_LIBSS ${OpenCV_LIBRARIES}) LIST(APPEND CMAKE_CFG_INCLUDE_DIRS ${OpenCV_INCLUDE_DIRS}) + + LIST(APPEND CMAKE_CFG_LINKER_LIBSS ${PROJECT_LIBRARY}) + LIST(APPEND CMAKE_CFG_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) + + INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) + + LIST(APPEND CALYP_LIB_LINKER_DEPENDENCIES ${OpenCV_LIBRARIES}) ENDIF() SET(Calyp_Lib_HEADERS CalypDefs.h CalypFrame.h CalypStream.h CalypOptions.h CalypModuleIf.h CalypOpenCVModuleIf.h) -CONFIGURE_FILE(CalypConfig.cmake.in CalypConfig.cmake @ONLY) +INCLUDE(CMakePackageConfigHelpers) -INCLUDE_DIRECTORIES(${FFMPEG_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS}) +CONFIGURE_PACKAGE_CONFIG_FILE(CalypConfig.cmake.in CalypConfig.cmake INSTALL_DESTINATION share/calyp) + +WRITE_BASIC_PACKAGE_VERSION_FILE( + CalypConfigVersion.cmake + VERSION ${CALYP_VERSION} + COMPATIBILITY SameMajorVersion +) + +# CONFIGURE_FILE(CalypConfig.cmake.in CalypConfig.cmake @ONLY) IF(USE_STATIC) ADD_LIBRARY(${PROJECT_LIBRARY} STATIC ${Calyp_Lib_SRCS}) @@ -57,21 +77,25 @@ ELSE() ADD_LIBRARY(${PROJECT_LIBRARY} SHARED ${Calyp_Lib_SRCS}) ENDIF() -TARGET_LINK_LIBRARIES(${PROJECT_LIBRARY} ${FFMPEG_LIBRARIES} ${OpenCV_LIBRARIES}) - -TARGET_INCLUDE_DIRECTORIES(${PROJECT_LIBRARY} PUBLIC $ $) - +TARGET_LINK_LIBRARIES(${PROJECT_LIBRARY} ${CALYP_LIB_LINKER_DEPENDENCIES}) +# TARGET_INCLUDE_DIRECTORIES(${PROJECT_LIBRARY} PUBLIC $ $) SET_TARGET_PROPERTIES(${PROJECT_LIBRARY} PROPERTIES VERSION ${CALYP_VERSION} SOVERSION ${CALYP_VERSION_MAJOR}) +EXPORT(TARGETS ${PROJECT_LIBRARY} FILE ${CMAKE_CURRENT_BINARY_DIR}/CalypTargets.cmake) +EXPORT(PACKAGE ${PROJECT_LIBRARY}) + IF(NOT USE_STATIC) INSTALL( TARGETS ${PROJECT_LIBRARY} + EXPORT "${PROJECT_LIBRARY}Targets" RUNTIME DESTINATION bin LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" ) INSTALL(FILES ${Calyp_Lib_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/CalypConfig.cmake DESTINATION share/calyp) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/CalypConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/CalypConfigVersion.cmake DESTINATION share/calyp) + INSTALL(EXPORT CalypTargets DESTINATION share/calyp) + ENDIF() IF(BUILD_TESTS) diff --git a/lib/CalypConfig.cmake.in b/lib/CalypConfig.cmake.in index c5239bd..fa6819b 100644 --- a/lib/CalypConfig.cmake.in +++ b/lib/CalypConfig.cmake.in @@ -12,7 +12,7 @@ # # # This file will define the following variables: -# - CALYP_LINKER_LIBS : The list of all imported targets for OpenCV modules. +# - CALYP_LIBRARIES : The list of all imported targets for OpenCV modules. # - CALYP_CXX_FLAGS # - CALYP_INCLUDE_DIRS : The Calyp include directories. # - CALYP_VERSION : The version of this Calyp build: "@CALYP_VERSION@" @@ -22,15 +22,18 @@ # # =================================================================================================================== +@PACKAGE_INIT@ -# ====================================================== -# Variables: -# ====================================================== SET(CALYP_VERSION @CALYP_VERSION@) SET(CALYP_VERSION_MAJOR @CALYP_VERSION_MAJOR@) SET(CALYP_VERSION_MINOR @CALYP_VERSION_MINOR@) SET(CALYP_VERSION_PATCH @CALYP_VERSION_PATCH@) +FIND_LIBRARY(CALYP_LIBRARY NAMES Calyp HINTS @CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ ) + SET( CALYP_CXX_FLAGS "" ) -SET( CALYP_INCLUDE_DIRS "@CMAKE_CFG_INCLUDE_DIRS@" ) -SET( CALYP_LINKER_LIBS "@CMAKE_CFG_LINKER_LIBSS@" ) +SET( CALYP_LIBRARIES "${CALYP_LIBRARY}" ) +LIST( APPEND CALYP_LIBRARIES "@CALYP_LIB_LINKER_DEPENDENCIES@") +set_and_check( CALYP_INCLUDE_DIRS "@CMAKE_CFG_INCLUDE_DIRS@" ) + +CHECK_REQUIRED_COMPONENTS(Calyp) diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index c504681..1851162 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -6,7 +6,7 @@ SET(CALYP_EXTRA_MODULES_DIR CACHE PATH "Location of extra Calyp modules" ) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_BINARY_DIR}) SET(Calyp_Mod_SRCS CalypModulesFactory.cpp) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 5a5b115..5edd12d 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -2,7 +2,7 @@ # CMakeLists for calyp tools component # -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/..) SET(Calyp_Tools_SRCS main.cpp CalypTools.cpp CalypToolsCmdParser.cpp)