Создание / упаковка / установка man-страницы с помощью cmake
Я ищу несколько хороших примеров / руководств по созданию, упаковке и установке man-страниц в проектах с использованием CMake.
Благодарю.
3 ответа
С cmake 2.8.12 под Linux у меня работает следующее:
ADD_CUSTOM_TARGET(man ALL)
ADD_CUSTOM_COMMAND(
TARGET man
SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/myprog.pod
COMMAND pod2man ARGS -s 1 -c "myprog manual" ${CMAKE_CURRENT_SOURCE_DIR}/myprog.pod ${CMAKE_CURRENT_BINARY_DIR}/myprog.1
OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/myprog.1
)
ADD_CUSTOM_COMMAND(
TARGET man
SOURCE man
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/myprog.1
)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/myprog.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1)
Что выглядит не элегантно даже по стандартам CMake. Я хотел бы увидеть решение с меньшим заиканием.
Возможно, вас заинтересует следующее решение, позволяющее создавать и устанавливать справочные страницы, написанные на Markdown или AsciiDoc:
https://github.com/rnpgp/cmake-modules/
Чтобы сгенерировать и установить справочную страницу, написанную на Markdown, было бы так же просто, как добавить две строки в ваш
CMakeLists.txt
:
include(PandocMan)
add_pandoc_man("${CMAKE_CURRENT_SOURCE_DIR}/utility.1.md")
То же самое с AsciiDoc и AsciiDoctor:
include(AdocMan)
add_adoc_man("${CMAKE_CURRENT_SOURCE_DIR}/utility.1.adoc")
Вы можете вникнуть в исходное дерево самого CMake, чтобы увидеть, как он устанавливает свои собственные справочные страницы.
Это обязательно будет комбинация:
- используя CMake add_custom_command
- вызов инструментов для создания / генерации документации в этих пользовательских командах
- установка результатов в правильном месте
См. Документацию по CMake add_custom_command и командам установки для получения дополнительной информации: