Пример: приложение и подключение библиотеки

This commit is contained in:
Andrei Astafev 2021-12-10 13:38:13 +03:00
parent 3ef3141fbb
commit f1480c212d
5 changed files with 70 additions and 0 deletions

3
.gitmodules vendored Normal file
View File

@ -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

40
CMakeLists.txt Normal file
View File

@ -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 <INSTALL_DIR>/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)

View File

@ -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)

View File

@ -0,0 +1,11 @@
#include <myx-cmake-example-library/init.hpp>
#include <iostream>
int main( int argc, char* argv[] )
{
auto s = init( argc );
std::cout << "Value: " << s << std::endl;
return ( 0 );
}

@ -0,0 +1 @@
Subproject commit 3ac50d5f03137c454afc221b11ea6344abbf0719