Пример программы
This commit is contained in:
parent
9ef2bdeb4f
commit
c8b1f1d1f6
41
CMakeLists.txt
Normal file
41
CMakeLists.txt
Normal 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)
|
||||
|
18
src/myx-cmake-example-app/CMakeLists.txt
Normal file
18
src/myx-cmake-example-app/CMakeLists.txt
Normal 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})
|
29
src/myx-cmake-example-app/main.cpp
Normal file
29
src/myx-cmake-example-app/main.cpp
Normal 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 );
|
||||
}
|
Loading…
Reference in New Issue
Block a user