Подключение внешней библиотеки

This commit is contained in:
Andrei Astafev 2020-04-11 16:14:40 +03:00
parent b14cb9cffc
commit 94cb28d492
5 changed files with 29 additions and 21 deletions

3
.gitmodules vendored
View File

@ -13,3 +13,6 @@
[submodule "cmake/etc/uncrustify"]
path = cmake/etc/uncrustify
url = https://git.246060.ru/f1x1t/uncrustify-config.git
[submodule "thirdparty/cmlib-example-library"]
path = thirdparty/cmlib-example-library
url = git@git.246060.ru:/f1x1t/cmlib-example-library

View File

@ -26,6 +26,19 @@ find_package(Boost 1.55.0 REQUIRED COMPONENTS headers)
# Автоматически генерируемый заголовочный файл
cmlib_config_hpp_generate()
# Подключение внешних проектов
include(ExternalProject)
ExternalProject_Add(ext-lib
EXCLUDE_FROM_ALL TRUE
SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/cmlib-example-library
INSTALL_DIR ${CMAKE_BINARY_DIR}
DOWNLOAD_COMMAND ""
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libcmext.a
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=Release
)
# Приложение
add_subdirectory(src/cmlib-example)

View File

@ -11,6 +11,16 @@ common_target_properties(${TRGT})
# Добавление к пути поиска заголовочных файлов
target_include_directories(${TRGT} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})
# Зависимость от библиотеки из внешнего проекта проекта
add_dependencies(${TRGT} ext-lib)
# Добавление каталога, в который устанавливаются заголовочные файлы
# от внешнего проекта, к списку путей для поиска
target_include_directories(${TRGT} PUBLIC $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
# Компоновка с библиотекой из внешнего проекта
target_link_libraries(${TRGT} ${CMAKE_BINARY_DIR}/lib/libcmlib-example.a)
# Имя целевого каталога и выходного файла для цели
set_target_properties(${TRGT}
PROPERTIES

View File

@ -1,29 +1,10 @@
#include "compiler_features.hpp"
#include "cmlib_private_config.hpp"
#include <cmlib-example/init.hpp>
#include <iostream>
#include <boost/range/counting_range.hpp>
int32_t nsum(int32_t i = 0)
{
int32_t s = 0;
for ( auto r : boost::counting_range( 1, i ) )
{
s += r;
}
return s;
}
int main(int argc, char* argv[])
{
// Значение из compiler_features.hpp
std::cout << CMLIB_EXAMPLE_APP_COMPILER_VERSION_MAJOR << std::endl;
// Значение из cmlib_private_config.hpp
std::cout << CMLIB_BUILD_TYPE << std::endl;
// Значение из cmlib_private_config.hpp
std::cout << CMLIB_BUILD_DATE << std::endl;
auto s = nsum( argc );
auto s = cmlib_example_init( argc );
std::cout << s << std::endl;
return ( s );

1
thirdparty/cmlib-example-library vendored Submodule

@ -0,0 +1 @@
Subproject commit d38b717e1b9d0169e404cc9fcc78d394c74638a6