Пример программы
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