# Минимальная версия Cmake cmake_minimum_required(VERSION 3.3) cmake_policy(VERSION 3.0.2..3.7) # Название проекта project(myx VERSION 0.3.0 LANGUAGES C CXX) set(CPACK_GENERATOR "TXZ;DEB") set(CPACK_PACKAGE_CONTACT "dev@246060.ru") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Mixed functions") set(CPACK_DEBIAN_PACKAGE_SECTION "misc") set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") # В каталоге cmake/lib находятся файлы с библиотечными функциями if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib) list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/cmlib) else() message(FATAL_ERROR "CMake library directory not exists") endif() list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/find) include(CMLibCommon) option(BUILD_EXAMPLES "Build examples" OFF) # Поиск библиотек с помощью pkgconfig find_package(PkgConfig) # Qt5 find_package(Qt5 COMPONENTS Core Network Gui Widgets DBus Concurrent Sql REQUIRED) pkg_check_modules(FMT fmt>=5.3.0) pkg_check_modules(SPDLOG spdlog>=1.3.1) # Автоматически генерируемый заголовочный файл cmlib_config_hpp_generate() configure_file(${CMAKE_SOURCE_DIR}/src/myx/base/config_flags.hpp.in ${CMAKE_BINARY_DIR}/include/config_flags.hpp) # Подключение внешних проектов include(ExternalProject) # Библиотеки add_subdirectory(src/myx/base) add_subdirectory(src/myx/filesystem) add_subdirectory(src/myx/log) add_subdirectory(src/myx/qt) # Примеры if (BUILD_EXAMPLES) add_subdirectory(examples/filesystem) add_subdirectory(examples/log) add_subdirectory(examples/qt) endif() ExternalProject_Add(whereami SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/whereami INSTALL_DIR ${CMAKE_BINARY_DIR} DOWNLOAD_COMMAND "" CONFIGURE_COMMAND ${CMAKE_COMMAND} -"G${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DBUILD_SHARED_LIBS=OFF -DBUILD_EXAMPLES=OFF ) add_breathe_target( TARGET_NAME doc-breathe SOURCE_DIR ${CMAKE_SOURCE_DIR}/doc/html DOXY_FILE ${CMAKE_SOURCE_DIR}/doc/html/Doxyfile.in CONF_FILE ${CMAKE_SOURCE_DIR}/doc/html/conf.py.in CACHE_DIR ${CMAKE_BINARY_DIR}/_doctrees BUILD_DIR ${CMAKE_BINARY_DIR}/doc/breathe HTML_DIR ${CMAKE_BINARY_DIR}/doc/breathe COMMENT "Documentation in HTML format with Breathe generator" ) add_doxygen_target( TARGET_NAME doc-doxygen DOXY_FILE ${CMAKE_SOURCE_DIR}/doc/html/Doxyfile.in OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/doc HTML YES LATEX YES )