如何配置Doxygen与CMake,使生成文档时自动触发构建阶段的头文件生成
概述
我的CMake项目中有部分头文件是在构建过程中自动生成的,我的目标是配置CMakeLists.txt,使得构建项目文档时也能触发头文件生成(无需触发其他构建流程)。基础的CMake/Doxygen配置参考了微软官方C++文档生成教程的初始步骤。
详细信息
本项目的目录结构较为特殊:
目录结构示意图
${CMAKE_SOURCE_DIR}为存放顶层CMakeLists.txt文件的cmake/目录,${CMAKE_BINARY_DIR}为cmake/cmake-build-debug。
目录结构截图1
目录结构截图2
我希望生成的文档存放在cmake/cmake-build-debug/docs路径下,而需要提交到仓库的CMake和Doxygen配置文件则存放在docs/目录中。
涉及的源文件如下:
squawk.cpp:
#include "squawk.hpp" void squawk(const std::string &s) { std::cout<<STRFY(SQUAWK)<<": "<<s<<std::endl; }
squawk.hpp:
#include <iostream> #include <string> #define STRINGIFY(X) #X #define STRFY(X) STRINGIFY(X) #include "squawk.hd" void squawk(const std::string &s);
main.cpp:
#include "squawk.hpp" int main(int argc, char* argv[]) { const std::string s = "Hello World!"; squawk(s); return 0; }
squawk.def:
#define SQUAWK squeal
构建过程中我会基于squawk.def,将其中的squeal替换为caw后保存为squawk.hd,该操作通过sed执行,匹配规则写在squawk.ss中:s/(#define SQUAWK)(.*)/\1 caw/。这就是头文件的生成流程,我希望仅构建文档时也能执行该流程,无需构建squawk二进制文件。
内容的提问来源于stack exchange,提问作者gomfy
相关产品推荐
相关产品推荐

