如何使用CMake指定troff手册页的生成和安装?

huangapple go评论127阅读模式
英文:

How do I specify troff man page generation & installation using CMake?

问题

我正在尝试将基于 Makefile 的构建切换到使用 CMake。我可以指定应用程序本身的构建,但是 - 还有一个手册页,格式为 TROFF。

  • 我如何告诉 CMake 将其处理成可安装的形式(例如,如果需要处理,压缩),并与可执行文件的构建一起进行?
  • 我如何让 CMake 将其安装到适当的位置?
英文:

I'm trying to switch a Makefile-based build to using CMake. I'm ok with specifying the build of the app itself, but - there's also a man (manual) page, in TROFF format.

  • How do I tell CMake to process it into an installable form (e.g. processing if necessary, compression), alongside the building of the executable?
  • How do I get CMake to install it to an appropriate location?

答案1

得分: 1

如果你想压缩某些东西,请使用 file(ARCHIVE_CREATE ...) 命令

要安装一个被设计成 man 手册页的东西,请使用 install(FILES ...) 命令 并在 DESTINATION 参数中使用 CMAKE_INSTALL_MANDIR

英文:

If you want to compress something, use the file(ARCHIVE_CREATE ...) command.

To install something that's intended to be a manpage, use the install(FILES ...) command and use CMAKE_INSTALL_MANDIR in the DESTINATION argument.

答案2

得分: 0

以下是翻译好的部分:

在 @starball 的回答中详细说明:

目前没有专门的“手动文件处理”机制来处理手动文件,因此您需要处理归档压缩。不需要对 TROFF 文件进行预处理。

假设您的程序名称是 foo,仓库中 TROFF 文件的相对路径为 doc/foo.1

首先,将您的 CMake 版本依赖项增加到 3.18,以便可以使用 file(ARCHIVE_CREATE) 命令的变体

现在,在您的 CMakeLists.txt 中添加以下行:

include(GNUInstallDirs)
file(ARCHIVE_CREATE OUTPUT foo.1.gz PATHS doc/foo.1 FORMAT raw COMPRESSION GZip)
install(FILES foo.1.gz DESTINATION "${CMAKE_INSTALL_MANDIR}")

GNUInstallDirs 模块定义了 _MANDIR 安装路径。)

英文:

Elaborating on @starball's answer:

There is currently no "hand-holding" specialty mechanism for handling manual files, so you need to take care of archive compression. No preliminary processing of the TROFF file is necessary.

Suppose your program name is foo and the TROFF file's relative path in the repository is doc/foo.1.

First, increase your CMake version dependency to 3.18, to have access to the file(ARCHIVE_CREATE) command variant.

Now, in your CMakeLists.txt, add the following lines:

include(GNUInstallDirs)
file(ARCHIVE_CREATE OUTPUT foo.1.gz PATHS doc/foo.1 FORMAT raw COMPRESSION GZip)
install(FILES foo.1.gz DESTINATION "${CMAKE_INSTALL_MANDIR}")

(the GNUINstallDirs module is what defines the _MANDIR install path.)

huangapple
  • 本文由 发表于 2023年6月25日 20:39:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/76550429.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定