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