From e1be3ec6cb167396f4b937dd8283b3a8442eb636 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Tue, 14 Apr 2020 00:36:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20MyXLib?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitmodules | 3 +++ CMakeLists.txt | 20 +++++++++++++++++++- src/cmlib-example/CMakeLists.txt | 29 +++++++++++++++++++++++++++-- src/cmlib-example/main.cpp | 31 ------------------------------- thirdparty/myxlib | 1 + 5 files changed, 50 insertions(+), 34 deletions(-) delete mode 100644 src/cmlib-example/main.cpp create mode 160000 thirdparty/myxlib diff --git a/.gitmodules b/.gitmodules index af0c3dd..0cf0ab2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "cmake/etc/uncrustify"] path = cmake/etc/uncrustify url = https://git.246060.ru/f1x1t/uncrustify-config.git +[submodule "thirdparty/myxlib"] + path = thirdparty/myxlib + url = https://git.246060.ru/f1x1t/myxlib.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f17659..653b8c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.3) cmake_policy(VERSION 3.0.2..3.7) # Название и версия проекта и используемые языки программирования -project(cmlib-example-app VERSION 0.2.0 LANGUAGES C CXX) +project(cmlib-example-app-qt5-con VERSION 0.2.0 LANGUAGES C CXX) # В каталоге cmake/cmlib находятся файлы с библиотечными функциями if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib) @@ -23,9 +23,27 @@ set(Boost_USE_MULTITHREADED OFF) set(Boost_USE_STATIC_RUNTIME ON) find_package(Boost 1.55.0 REQUIRED COMPONENTS headers) +# Qt5 +find_package(Qt5 COMPONENTS Core REQUIRED) + # Автоматически генерируемый заголовочный файл cmlib_config_hpp_generate() +# Подключение внешних проектов +include(ExternalProject) + +ExternalProject_Add( + myxlib + SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/myxlib + INSTALL_DIR ${CMAKE_BINARY_DIR} + DOWNLOAD_COMMAND "" + CONFIGURE_COMMAND + ${CMAKE_COMMAND} -"G${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=Debug + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} + BUILD_COMMAND true) + # Приложение add_subdirectory(src/cmlib-example) diff --git a/src/cmlib-example/CMakeLists.txt b/src/cmlib-example/CMakeLists.txt index 1c903dd..0dc8837 100644 --- a/src/cmlib-example/CMakeLists.txt +++ b/src/cmlib-example/CMakeLists.txt @@ -2,15 +2,40 @@ set(TRGT cmlib-example) # Список файлов исходных текстов -set(TRGT_sources ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp) +set(TRGT_cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp) + +# Правила для создания файла ресурсов с вложенными файлами переводов +qt5_translation(TRGT_qrc OUTPUT_DIR ${CMAKE_SOURCE_DIR}/l10n BASE_NAME ${TRGT} LANGUAGES ru_RU) + +# Путь поиска библиотек созданных при компиляции проекта, +# включая библиотеки из подключённых внешних проектов, например MyXLib +# Функция link_directories обязательно должна находиться перед +# функцией add_executable, иначе компоновка не может быть выполнена +link_directories(${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) # Функция для создания цели, результатом которой будет сборка приложения -add_executable(${TRGT} ${TRGT_sources}) +add_executable(${TRGT} ${TRGT_cpp} ${TRGT_qrc}) common_target_properties(${TRGT}) +# Qt5: подключение заголовочных файлов +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) + +# Qt5: подключение библиотек +target_link_libraries(${TRGT} Qt5::Core) + # Добавление к пути поиска заголовочных файлов target_include_directories(${TRGT} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS}) +# Зависимость от библиотеки из внешнего проекта проекта +add_dependencies(${TRGT} myxlib) + +# Добавление каталога, в который устанавливаются заголовочные файлы +# от внешнего проекта, к списку путей для поиска +target_include_directories(${TRGT} PUBLIC $) + +# Компоновка с библиотеками из внешнего проекта +target_link_libraries(${TRGT} myx-qt myx-filesystem myx-base) + # Имя целевого каталога и выходного файла для цели set_target_properties(${TRGT} PROPERTIES diff --git a/src/cmlib-example/main.cpp b/src/cmlib-example/main.cpp deleted file mode 100644 index 0b10770..0000000 --- a/src/cmlib-example/main.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "compiler_features.hpp" -#include "cmlib_private_config.hpp" - -#include -#include - -int32_t nsum(int32_t i = 0) -{ - int32_t s = 0; - for ( auto r : boost::counting_range( 1, i ) ) - { - s += r; - } - return s; -} - -int main(int argc, char* argv[]) -{ - // Значение из compiler_features.hpp - std::cout << CMLIB_EXAMPLE_APP_COMPILER_VERSION_MAJOR << std::endl; - // Значение из cmlib_private_config.hpp - std::cout << CMLIB_BUILD_TYPE << std::endl; - // Значение из cmlib_private_config.hpp - std::cout << CMLIB_BUILD_DATE << std::endl; - - auto s = nsum( argc ); - std::cout << s << std::endl; - - return ( s ); -} - diff --git a/thirdparty/myxlib b/thirdparty/myxlib new file mode 160000 index 0000000..f63c6b8 --- /dev/null +++ b/thirdparty/myxlib @@ -0,0 +1 @@ +Subproject commit f63c6b8302c8cc588a81b8ba888dd0d10c95ea31