diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..cf79cf8 --- /dev/null +++ b/CMakeLists.txt @@ -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) + diff --git a/src/myx-cmake-example-app/CMakeLists.txt b/src/myx-cmake-example-app/CMakeLists.txt new file mode 100644 index 0000000..b1eee99 --- /dev/null +++ b/src/myx-cmake-example-app/CMakeLists.txt @@ -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}) diff --git a/src/myx-cmake-example-app/main.cpp b/src/myx-cmake-example-app/main.cpp new file mode 100644 index 0000000..4caebb8 --- /dev/null +++ b/src/myx-cmake-example-app/main.cpp @@ -0,0 +1,29 @@ +#include +#include + +#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[] ) +{ + // Значение из 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 ); +}