Пример библиотеки
This commit is contained in:
parent
ce708a4f1d
commit
0a54b6126a
35
CMakeLists.txt
Normal file
35
CMakeLists.txt
Normal file
@ -0,0 +1,35 @@
|
||||
# Минимальная версия CMake
|
||||
cmake_minimum_required(VERSION 3.3)
|
||||
|
||||
# Предпочтительно следовать стандартам принятым в указанном диапазоне версий
|
||||
cmake_policy(VERSION 3.0.2..3.7)
|
||||
|
||||
# Название и версия проекта и используемые языки программирования
|
||||
project(myx-cmake-example-library 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)
|
||||
|
||||
# Автоматически генерируемый заголовочный файл
|
||||
myx_cmake_generate_private_config_header()
|
||||
|
||||
# Автоматически генерируемый файл с информацией о репозитории
|
||||
myx_cmake_generate_git_info_header()
|
||||
|
||||
# Исходные тексты библиотеки
|
||||
add_subdirectory(src/myx-cmake-example-library)
|
||||
|
33
src/myx-cmake-example-library/CMakeLists.txt
Normal file
33
src/myx-cmake-example-library/CMakeLists.txt
Normal file
@ -0,0 +1,33 @@
|
||||
# Название основной цели и имя библиотеки в текущем каталоге
|
||||
set(TRGT myx-cmake-example-library)
|
||||
|
||||
# Список файлов исходных текстов
|
||||
set(TRGT_cpp ${CMAKE_CURRENT_SOURCE_DIR}/init.cpp)
|
||||
|
||||
# Список заголовочных файлов (используется для установки)
|
||||
set(TRGT_hpp ${CMAKE_CURRENT_SOURCE_DIR}/init.hpp)
|
||||
|
||||
# Функция для создания цели, результатом которой будет сборка библиотеки
|
||||
# Обязательно использовать тип OBJECT
|
||||
add_library(${TRGT} OBJECT ${TRGT_cpp} ${TRGT_hpp})
|
||||
|
||||
# Автоматическая установка значений свойств для цели
|
||||
myx_cmake_common_target_properties(${TRGT})
|
||||
|
||||
# Создание разделяемой библиотеки
|
||||
myx_cmake_add_shared_library(${TRGT})
|
||||
|
||||
# Создание статической библиотеки
|
||||
myx_cmake_add_static_library(${TRGT})
|
||||
|
||||
# Цель, используемая только для установки заголовочных файлов без компиляции проекта
|
||||
add_custom_target(${TRGT}-install-headers
|
||||
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=dev
|
||||
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||
|
||||
# Установка заголовочных файлов
|
||||
install(FILES ${TRGT_hpp} COMPONENT dev DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TRGT})
|
||||
|
||||
# Установка файла для pkg-config
|
||||
myx_cmake_generate_pkgconfig(${TRGT} COMPONENT dev INSTALL_LIBRARY true)
|
||||
|
13
src/myx-cmake-example-library/init.cpp
Normal file
13
src/myx-cmake-example-library/init.cpp
Normal file
@ -0,0 +1,13 @@
|
||||
#include "init.hpp"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
int32_t init( int32_t v = 0 )
|
||||
{
|
||||
int32_t s = 0;
|
||||
for ( auto i = std::abs( v ); i > 0; i-- )
|
||||
{
|
||||
s += i;
|
||||
}
|
||||
return( s );
|
||||
}
|
10
src/myx-cmake-example-library/init.hpp
Normal file
10
src/myx-cmake-example-library/init.hpp
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef MYX_CMAKE_EXAMPLE_LIBRARY_INIT_HPP_
|
||||
#define MYX_CMAKE_EXAMPLE_LIBRARY_INIT_HPP_
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
int32_t init( int32_t v );
|
||||
|
||||
#endif // MYX_CMAKE_EXAMPLE_LIBRARY_INIT_HPP_
|
Loading…
Reference in New Issue
Block a user