使用CMake在Sphinx文档中使用生成的图像



如何在Sphinx源目录外自动生成的Sphinx.rst文件中包含图像?

我使用CMake构建了一个狮身人面像项目。其中一个Sphinx源文件包含一个PDF图像,该图像由CMake项目中的一个单独目标生成。据我所知,不应该在CMake源树中从CMake构建过程生成输出。(我认为这可以通过不同的CMake构建配置生成不同的输出来证明(。因此,Sphinx构建的输入不能在Sphinx源树中,并且在编写Sphinx代码时,要包含在Sphinx文档中的图像的相对路径是未知的。

我该如何解决这个问题?

这是一个解决方案的草图(太大了,无法发表评论(:

  1. 您可以使用一个环境变量集从CMake调用Sphinx,该环境变量集指向存储生成图像的构建(子(目录。通过add_custom_command${CMAKE_COMMAND} -E env ...
  2. 您的Sphinx配置可以读取该环境变量(``(并将结果添加到html_static_path
import os
# ...
html_static_path = [
# ...
os.getenv('BUILD_DIR'),
]
  1. 然后确保您有一个自定义目标(称为generate_doc_images(来驱动生成图像的自定义命令。使用add_dependencies确保图像生成器在Sphinx之前运行

如果你提供一个MRE,几乎可以让你一直做到这一点,我可以帮助你正确地连接。

最新更新