update
This commit is contained in:
parent
2abd41f429
commit
ec16a3a380
2
plugins/thirdparty/asciidoctor
vendored
2
plugins/thirdparty/asciidoctor
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 288c5aeba001bc605d20c573c37d1fb9384262e8
|
Subproject commit b271b3ed553a3e00f9fa079384e94a27c68ff550
|
@ -1 +1 @@
|
|||||||
Subproject commit ce6b18660a933855dbe996fc5b5d3d0ac1c25223
|
Subproject commit c651ba0ef064734b6457684c780f8c863f0956bf
|
@ -96,7 +96,9 @@
|
|||||||
выпуск, появляется необходимость корректного полного удаления
|
выпуск, появляется необходимость корректного полного удаления
|
||||||
результатов предыдущего тип сборки.
|
результатов предыдущего тип сборки.
|
||||||
|
|
||||||
== Начало проекта
|
|
||||||
|
[[base-project]]
|
||||||
|
== Базовый проект
|
||||||
|
|
||||||
Проект, в котором выполнены приведённые в данном разделе действия,
|
Проект, в котором выполнены приведённые в данном разделе действия,
|
||||||
можно посмотреть https://git.246060.ru/f1x1t/cmlib-example-base[здесь]
|
можно посмотреть https://git.246060.ru/f1x1t/cmlib-example-base[здесь]
|
||||||
@ -124,11 +126,11 @@ git init
|
|||||||
|
|
||||||
[source,sh]
|
[source,sh]
|
||||||
----
|
----
|
||||||
git submodule add https://git.246060.ru:f1x1t/cmlib.git cmake/cmlib
|
git submodule add https://git.246060.ru/f1x1t/cmlib.git cmake/cmlib
|
||||||
git submodule add https://git.246060.ru:f1x1t/cmake-find.git cmake/find
|
git submodule add https://git.246060.ru/f1x1t/cmake-find.git cmake/find
|
||||||
git submodule add https://git.246060.ru:f1x1t/cmake-generators.git cmake/generators
|
git submodule add https://git.246060.ru/f1x1t/cmake-generators.git cmake/generators
|
||||||
git submodule add https://git.246060.ru:f1x1t/cmake-doc.git cmake/doc
|
git submodule add https://git.246060.ru/f1x1t/cmake-doc.git cmake/doc
|
||||||
git submodule add https://git.246060.ru:f1x1t/uncrustify-config.git cmake/etc/uncrustify
|
git submodule add https://git.246060.ru/f1x1t/uncrustify-config.git cmake/etc/uncrustify
|
||||||
git commit -a -m "Начало проекта"
|
git commit -a -m "Начало проекта"
|
||||||
----
|
----
|
||||||
|
|
||||||
@ -375,83 +377,157 @@ cpack
|
|||||||
|
|
||||||
== Примеры библиотек и приложений
|
== Примеры библиотек и приложений
|
||||||
|
|
||||||
Напишу позже.
|
|
||||||
|
|
||||||
|
=== Базовая библиотека
|
||||||
|
|
||||||
|
Проект с базовой библиотекой реализован на основе <<base-project,базового проекта>>.
|
||||||
|
Исходные тексты содержат комментарии, объясняющие назначение используемых функций.
|
||||||
|
Проект можно посмотреть https://git.246060.ru/f1x1t/cmlib-example-library[здесь]
|
||||||
|
или сделать его копию командой:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-library
|
||||||
|
----
|
||||||
|
|
||||||
|
В файл `CMakeLists.txt`, находящийся в корневом каталоге проекта, нужно добавить:
|
||||||
== Базовая библиотека
|
|
||||||
|
|
||||||
В файле `cmex/CMakeLists.txt` должна быть строка, включающая поиск файла
|
|
||||||
`CMakeLists.txt` в подкаталоге `src/lib`:
|
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
----
|
----
|
||||||
add_subdirectory(src/libcmex)
|
# Поиск библиотеки 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)
|
||||||
----
|
----
|
||||||
|
|
||||||
В каталоге `cmex/src/libcmex` нужно создать файл `cmex.hpp`:
|
|
||||||
|
|
||||||
[source,cpp]
|
В подкаталоге `src/cmlib-example` нужно создать файл `CMakeLists.txt`:
|
||||||
----
|
|
||||||
#ifndef LIBCMEX_CMEX_HPP_
|
|
||||||
#define LIBCMEX_CMEX_HPP_
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
int32_t cmex_init(int32_t i);
|
|
||||||
|
|
||||||
#endif // LIBCMEX_CMEX_HPP_
|
|
||||||
----
|
|
||||||
|
|
||||||
файл `cmex.cpp`:
|
|
||||||
|
|
||||||
[source,cpp]
|
|
||||||
----
|
|
||||||
#include "cmex.hpp"
|
|
||||||
|
|
||||||
int32_t cmex_init(int32_t i = 0) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
и файл `CMakeLists.txt`:
|
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
----
|
----
|
||||||
# Название основной цели и имя библиотеки в текущем каталоге
|
# Название основной цели и имя библиотеки в текущем каталоге
|
||||||
set(current_target cmex)
|
set(TRGT cmlib-example)
|
||||||
|
|
||||||
# Список файлов исходных текстов
|
# Список файлов исходных текстов
|
||||||
set(current_target_sources
|
set(TRGT_sources
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cmex.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/init.cpp)
|
||||||
)
|
|
||||||
|
|
||||||
# Список заголовочных файлов (используется для установки)
|
# Список заголовочных файлов (используется для установки)
|
||||||
set(current_target_headers
|
set(TRGT_headers
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cmex.hpp
|
${CMAKE_CURRENT_SOURCE_DIR}/init.hpp)
|
||||||
)
|
|
||||||
|
|
||||||
add_common_library(TARGET ${current_target} SOURCES ${current_target_sources})
|
# Функция для создания цели, результатом которой будет сборка библиотеки
|
||||||
common_target_properties(${current_target})
|
add_common_library(TARGET ${TRGT} SOURCES ${TRGT_sources})
|
||||||
|
common_target_properties(${TRGT})
|
||||||
|
|
||||||
# Цель, используемая только для установки заголовочных файлов, без компиляции проекта
|
# Добавление к пути поиска заголовочных файлов
|
||||||
add_custom_target(${current_target}-install-headers
|
target_include_directories(${TRGT} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
|
||||||
-DCMAKE_INSTALL_COMPONENT=headers -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Правила для установки
|
# Цель, используемая только для установки
|
||||||
install(TARGETS ${current_target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
# заголовочных файлов без компиляции проекта
|
||||||
|
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)
|
if(BUILD_SHARED_LIBS)
|
||||||
install(TARGETS ${current_target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
install(TARGETS ${TRGT}_shared
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
endif()
|
endif()
|
||||||
install(FILES ${CMAKE_BINARY_DIR}/include/cmlib_config.hpp ${current_target_headers}
|
|
||||||
COMPONENT headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${current_target})
|
# Установка заголовочных файлов
|
||||||
|
install(
|
||||||
|
FILES ${TRGT}_headers
|
||||||
|
COMPONENT headers
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TRGT})
|
||||||
|
|
||||||
|
# Установка файла для pkg-config
|
||||||
|
install(FILES ${CMAKE_BINARY_DIR}/${TRGT}.pc
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
----
|
----
|
||||||
|
|
||||||
== Базовое приложение
|
|
||||||
|
файл `init.hpp`:
|
||||||
|
|
||||||
|
[source,cpp]
|
||||||
|
----
|
||||||
|
#ifndef CMLIB_EXAMPLE_HPP_
|
||||||
|
#define CMLIB_EXAMPLE_HPP_
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
int32_t cmlib_example_init(int32_t i);
|
||||||
|
|
||||||
|
#endif // CMLIB_EXAMPLE_HPP_
|
||||||
|
----
|
||||||
|
|
||||||
|
и файл `init.cpp`:
|
||||||
|
|
||||||
|
[source,cpp]
|
||||||
|
----
|
||||||
|
#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;
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ПИШУ ЗДЕСЬ!!!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
=== Базовое приложение
|
||||||
|
|
||||||
|
Проект с базовым приложением реализован на основе <<base-project,базового проекта>>.
|
||||||
|
Исходные тексты содержат комментарии, объясняющие назначение используемых функций.
|
||||||
|
Проект можно посмотреть https://git.246060.ru/f1x1t/cmlib-example-application[здесь]
|
||||||
|
или сделать его копию командой:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-application
|
||||||
|
----
|
||||||
|
|
||||||
|
В файл `CMakeLists.txt`, находящийся в корневом каталоге проекта, нужно добавить:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
В файле `cmex/CMakeLists.txt` должна быть строка, включающая поиск файла
|
В файле `cmex/CMakeLists.txt` должна быть строка, включающая поиск файла
|
||||||
`CMakeLists.txt` в подкаталоге `src/cmex`:
|
`CMakeLists.txt` в подкаталоге `src/cmex`:
|
||||||
@ -521,6 +597,8 @@ target_link_libraries(${current_target} cmex_static)
|
|||||||
install(TARGETS ${current_target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(TARGETS ${current_target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
== Подключение внешнего проекта
|
== Подключение внешнего проекта
|
||||||
|
|
||||||
В каталоге `cmex/thirdparty` нужно создать каталог `cmext` с проектом,
|
В каталоге `cmex/thirdparty` нужно создать каталог `cmext` с проектом,
|
||||||
|
Loading…
Reference in New Issue
Block a user