Пример библиотеки
This commit is contained in:
parent
641d4c9b40
commit
169daf19d0
@ -17,4 +17,21 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/find)
|
||||
|
||||
include(CMLibCommon)
|
||||
|
||||
# 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 COMPONENTS headers)
|
||||
|
||||
# Автоматически генерируемый заголовочный файл
|
||||
cmlib_config_hpp_generate()
|
||||
|
||||
# Библиотека
|
||||
add_subdirectory(src/cmlib-example)
|
||||
|
||||
# Документация
|
||||
add_subdirectory(cmake/doc)
|
||||
|
||||
# Создание вспомогательных символических ссылок
|
||||
add_dependencies(cmlib-example create_auxilary_symlinks)
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit c9c13df5527f59c4f9eff6229152205aa296605b
|
||||
Subproject commit c62609e0dc48935b67cda434a75f4da50c4990d4
|
@ -1 +1 @@
|
||||
Subproject commit 9952d8626933a1003f90395a90946934dd254f48
|
||||
Subproject commit b01bc7a52e091421be98f8bf670232402e17c3fe
|
45
src/cmlib-example/CMakeLists.txt
Normal file
45
src/cmlib-example/CMakeLists.txt
Normal file
@ -0,0 +1,45 @@
|
||||
# Название основной цели и имя библиотеки в текущем каталоге
|
||||
set(TRGT cmlib-example)
|
||||
|
||||
# Список файлов исходных текстов
|
||||
set(TRGT_sources
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/init.cpp)
|
||||
|
||||
# Список заголовочных файлов (используется для установки)
|
||||
set(TRGT_headers
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/init.hpp)
|
||||
|
||||
# Функция для создания цели, результатом которой будет сборка библиотеки
|
||||
add_common_library(TARGET ${TRGT} SOURCES ${TRGT_sources})
|
||||
common_target_properties(${TRGT})
|
||||
|
||||
# Добавление к пути поиска заголовочных файлов
|
||||
target_include_directories(${TRGT} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})
|
||||
|
||||
# Цель, используемая только для установки
|
||||
# заголовочных файлов без компиляции проекта
|
||||
add_custom_target(
|
||||
${TRGT}-install-headers
|
||||
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=headers -P
|
||||
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||
|
||||
# Установка статической библиотеки
|
||||
install(TARGETS ${TRGT}_static
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
|
||||
# Установка динамической библиотеки
|
||||
if(BUILD_SHARED_LIBS)
|
||||
install(TARGETS ${TRGT}_shared
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
# Установка заголовочных файлов
|
||||
install(
|
||||
FILES ${TRGT_headers}
|
||||
COMPONENT headers
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${current_target})
|
||||
|
||||
# Установка файла для pkg-config
|
||||
install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
|
14
src/cmlib-example/init.cpp
Normal file
14
src/cmlib-example/init.cpp
Normal file
@ -0,0 +1,14 @@
|
||||
#include "init.hpp"
|
||||
|
||||
#include <boost/range/counting_range.hpp>
|
||||
|
||||
int32_t cmlib_example_init(int32_t i = 0)
|
||||
{
|
||||
int32_t s = 0;
|
||||
for ( auto r : boost::counting_range( 1, i ) )
|
||||
{
|
||||
s += r;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
9
src/cmlib-example/init.hpp
Normal file
9
src/cmlib-example/init.hpp
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef CMLIB_EXAMPLE_HPP_
|
||||
#define CMLIB_EXAMPLE_HPP_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
int32_t cmlib_example_init(int32_t i);
|
||||
|
||||
#endif // CMLIB_EXAMPLE_HPP_
|
||||
|
Loading…
x
Reference in New Issue
Block a user