Пример: приложение и подключение библиотеки
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