Пример программы

This commit is contained in:
Andrei Astafev 2021-12-09 17:31:49 +03:00
parent 9ef2bdeb4f
commit c8b1f1d1f6
3 changed files with 88 additions and 0 deletions

41
CMakeLists.txt Normal file
View File

@ -0,0 +1,41 @@
# Минимальная версия CMake
cmake_minimum_required(VERSION 3.3)
# Предпочтительно следовать стандартам принятым в указанном диапазоне версий
cmake_policy(VERSION 3.0.2..3.7)
# Название и версия проекта и используемые языки программирования
project(myx-cmake-example-app 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)
# 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)
# Автоматически генерируемый заголовочный файл
myx_cmake_generate_private_config_header()
# Автоматически генерируемый файл с информацией о репозитории
myx_cmake_generate_git_info_header()
# Исходные тексты библиотеки
add_subdirectory(src/myx-cmake-example-app)

View File

@ -0,0 +1,18 @@
# Название основной цели и имени программы в текущем каталоге
set(TRGT myx-cmake-example-app)
# Список файлов исходных текстов
set(TRGT_cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)
# Функция для создания цели, результатом которой будет сборка приложения
add_executable(${TRGT} ${TRGT_cpp})
myx_cmake_common_target_properties(${TRGT})
# Добавление к пути поиска заголовочных файлов
target_include_directories(${TRGT} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})
# Имя выходного файла для цели
set_target_properties(${TRGT} PROPERTIES OUTPUT_NAME ${TRGT})
# Правила для установки
install(TARGETS ${TRGT} COMPONENT main RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

View File

@ -0,0 +1,29 @@
#include <myx_cmake_git_info.hpp>
#include <myx_cmake_private_config.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[] )
{
// Значение из myx_cmake_private_config.hpp
std::cout << "Build type: " << MYX_CMAKE_BUILD_TYPE << std::endl;
// Значение из myx_cmake_git_info.hpp
std::cout << "Git revision: " << MYX_CMAKE_EXAMPLE_APP_GIT_REV << std::endl;
auto s = nsum( argc );
std::cout << s << std::endl;
return ( s );
}