Пример: приложение и подключение библиотеки
This commit is contained in:
parent
3ef3141fbb
commit
f1480c212d
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal 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
40
CMakeLists.txt
Normal 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)
|
15
src/myx-cmake-example-app-ext/CMakeLists.txt
Normal file
15
src/myx-cmake-example-app-ext/CMakeLists.txt
Normal 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)
|
11
src/myx-cmake-example-app-ext/main.cpp
Normal file
11
src/myx-cmake-example-app-ext/main.cpp
Normal 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 );
|
||||||
|
}
|
1
thirdparty/myx-cmake-example-library
vendored
Submodule
1
thirdparty/myx-cmake-example-library
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 3ac50d5f03137c454afc221b11ea6344abbf0719
|
Loading…
Reference in New Issue
Block a user