From f1480c212d5ddb41741d46bb6f498c19b7a54a00 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Fri, 10 Dec 2021 13:38:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=BC=D0=B5=D1=80:=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitmodules | 3 ++ CMakeLists.txt | 40 ++++++++++++++++++++ src/myx-cmake-example-app-ext/CMakeLists.txt | 15 ++++++++ src/myx-cmake-example-app-ext/main.cpp | 11 ++++++ thirdparty/myx-cmake-example-library | 1 + 5 files changed, 70 insertions(+) create mode 100644 .gitmodules create mode 100644 CMakeLists.txt create mode 100644 src/myx-cmake-example-app-ext/CMakeLists.txt create mode 100644 src/myx-cmake-example-app-ext/main.cpp create mode 160000 thirdparty/myx-cmake-example-library diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..109078e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "thirdparty/myx-cmake-example-library"] + path = thirdparty/myx-cmake-example-library + url = https://git.246060.ru/f1x1t/myx-cmake-example-library diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..3a8017c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,40 @@ +# Минимальная версия CMake +cmake_minimum_required(VERSION 3.3) + +# Предпочтительно следовать стандартам принятым в указанном диапазоне версий +cmake_policy(VERSION 3.0.2..3.7) + +# Название и версия проекта и используемые языки программирования +project(myx-cmake-example-app-ext VERSION 0.2.0 LANGUAGES C CXX) + +### +# Обязательные переменные для MyxCMake +### +# Название организации +set(MYX_CMAKE_ORGANIZATION_NAME "Org." CACHE STRING "") + +# Имя автора +set(MYX_CMAKE_AUTHOR_NAME "John Doe" CACHE STRING "") + +# Почта автора +set(MYX_CMAKE_AUTHOR_EMAIL "mail@johndoe.com" CACHE STRING "") + +# Краткое описание проекта +set(MYX_CMAKE_DESCRIPTION "Пример проекта: программа с поключенной библиотекой" CACHE STRING "") + +find_package(MyxCMake REQUIRED) + +# Подключение внешних проектов +include(ExternalProject) + +ExternalProject_Add(extlib + EXCLUDE_FROM_ALL TRUE + SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/myx-cmake-example-library + INSTALL_DIR ${CMAKE_BINARY_DIR} + DOWNLOAD_COMMAND "" + BUILD_BYPRODUCTS /lib/libmyx-cmake-example-library.a + CMAKE_ARGS ${MYX_CMAKE_EXTERNAL_PROJECT_ARGS} -DBUILD_MYX_CMAKE_EXAMPLE_LIBRARY_SHARED=OFF + ) + +# Исходные тексты программы +add_subdirectory(src/myx-cmake-example-app-ext) diff --git a/src/myx-cmake-example-app-ext/CMakeLists.txt b/src/myx-cmake-example-app-ext/CMakeLists.txt new file mode 100644 index 0000000..bded110 --- /dev/null +++ b/src/myx-cmake-example-app-ext/CMakeLists.txt @@ -0,0 +1,15 @@ +# Название основной цели и имени программы в текущем каталоге +set(TRGT myx-cmake-example-app-ext) + +# Список файлов исходных текстов +set(TRGT_cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp) + +# Функция для создания цели, результатом которой будет сборка приложения +add_executable(${TRGT} ${TRGT_cpp}) +myx_cmake_common_target_properties(${TRGT}) + +# Зависимость от библиотеки из внешнего проекта +add_dependencies(${TRGT} extlib) + +# Компоновка с библиотекой из внешнего проекта +target_link_libraries(${TRGT} myx-cmake-example-library) diff --git a/src/myx-cmake-example-app-ext/main.cpp b/src/myx-cmake-example-app-ext/main.cpp new file mode 100644 index 0000000..73cb0bd --- /dev/null +++ b/src/myx-cmake-example-app-ext/main.cpp @@ -0,0 +1,11 @@ +#include + +#include + +int main( int argc, char* argv[] ) +{ + auto s = init( argc ); + std::cout << "Value: " << s << std::endl; + + return ( 0 ); +} diff --git a/thirdparty/myx-cmake-example-library b/thirdparty/myx-cmake-example-library new file mode 160000 index 0000000..3ac50d5 --- /dev/null +++ b/thirdparty/myx-cmake-example-library @@ -0,0 +1 @@ +Subproject commit 3ac50d5f03137c454afc221b11ea6344abbf0719