From 3520c03452077d97ebdcd13cc00577f29f6b65c4 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Sat, 11 Apr 2020 14:42:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=BC=D0=B5=D1=80=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 20 +++++++++++++++++++- src/cmlib-example/CMakeLists.txt | 22 ++++++++++++++++++++++ src/cmlib-example/main.cpp | 20 ++++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/cmlib-example/CMakeLists.txt create mode 100644 src/cmlib-example/main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 24471b3..6f17659 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.3) cmake_policy(VERSION 3.0.2..3.7) # Название и версия проекта и используемые языки программирования -project(cmlib-example-base VERSION 0.2.0 LANGUAGES C CXX) +project(cmlib-example-app VERSION 0.2.0 LANGUAGES C CXX) # В каталоге cmake/cmlib находятся файлы с библиотечными функциями if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib) @@ -17,3 +17,21 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/find) include(CMLibCommon) +# Boost +set(Boost_USE_STATIC_LIBS ON) +set(Boost_USE_MULTITHREADED OFF) +set(Boost_USE_STATIC_RUNTIME ON) +find_package(Boost 1.55.0 REQUIRED COMPONENTS headers) + +# Автоматически генерируемый заголовочный файл +cmlib_config_hpp_generate() + +# Приложение +add_subdirectory(src/cmlib-example) + +# Документация +add_subdirectory(cmake/doc) + +# Создание вспомогательных символических ссылок +add_dependencies(cmlib-example create_auxilary_symlinks) + diff --git a/src/cmlib-example/CMakeLists.txt b/src/cmlib-example/CMakeLists.txt new file mode 100644 index 0000000..1c903dd --- /dev/null +++ b/src/cmlib-example/CMakeLists.txt @@ -0,0 +1,22 @@ +# Название основной цели и имя библиотеки в текущем каталоге +set(TRGT cmlib-example) + +# Список файлов исходных текстов +set(TRGT_sources ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp) + +# Функция для создания цели, результатом которой будет сборка приложения +add_executable(${TRGT} ${TRGT_sources}) +common_target_properties(${TRGT}) + +# Добавление к пути поиска заголовочных файлов +target_include_directories(${TRGT} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS}) + +# Имя целевого каталога и выходного файла для цели +set_target_properties(${TRGT} + PROPERTIES + OUTPUT_NAME ${TRGT} + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} + ) + +# Правила для установки +install(TARGETS ${TRGT} COMPONENT MAIN RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/cmlib-example/main.cpp b/src/cmlib-example/main.cpp new file mode 100644 index 0000000..c75a2ec --- /dev/null +++ b/src/cmlib-example/main.cpp @@ -0,0 +1,20 @@ +#include +#include + +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[]) +{ + auto s = nsum( argc ); + std::cout << s << std::endl; + return ( s ); +} +