英文:
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.)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论