Создание / упаковка / установка 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 и командам установки для получения дополнительной информации:

Другие вопросы по тегам