通过命令行指定Doxygen参数

40

我正在创建一个脚本,用于使用Doxygen自动生成我的项目文档,这似乎是一个很棒的工具。
让我不明白的是,用户能否通过设置命令行参数直接指定项目名称、项目描述等参数。

doxygen -g "parameter modification here"
doxygen Doxyfile

有什么技巧会很受欢迎!

3个回答

63

请参考FAQ中第17个问题的答案:http://www.doxygen.nl/manual/faq.html#faq_cmdline,下面是重复的部分:

我可以通过命令行配置doxygen吗?

不能通过命令行选项进行配置,但是doxygen可以从stdin读取,因此您可以通过管道将内容传递给它。以下是如何在命令行上覆盖配置文件中的选项的示例(假设为UNIX环境):

( cat Doxyfile ; echo "PROJECT_NUMBER=1.0" ) | doxygen -

对于Windows,以下代码将执行相同操作:

( type Doxyfile & echo PROJECT_NUMBER=1.0 ) | doxygen.exe -

如果指定了具有相同名称的多个选项,则Doxygen将使用最后一个选项。要附加到现有选项,您可以使用+=运算符。


4
那么,就归根结底要看RTFM(读手册)了 :-) 直接将选项传递给脚本似乎有点奇怪。我会把这当作答案考虑,因为它提供了稍微详细一些的例子。 - Potney Switters
@doxygen:谢谢。不过,这种设计有点值得商榷,因为它需要人们费尽周折才能使其在不同的系统上运行(正如上面的例子所证明的那样)。比如,在一个应该在Windows和Linux上都能工作的make文件中... - 0xC0000022L
这是一个很好的解决缺失功能的方案。不幸的是,doxygen似乎会“忘记”配置文件中的其他设置。例如,*PROJECT_NAME没有被使用(而是使用了“My Project”);PROJECT_NUMBER没有被使用(它是空的);而我试图更改的设置(OUTPUT_DIRECTORY*)还有其他路径附加到它上面...为什么不允许我们在命令行上指定呢? - jww
@jww 针对Unix系统:( cat Doxyfile ; echo "PROJECT_NUMBER=1.0" ; echo "PROJECT_NAME="MyProjectName") | doxygen -。这是你想要的吗?对我来说完美地运作。 - PiJ

21

(这是对被接受的答案的替代方案-很可能在上面。)

我喜欢使用配置文件中的环境变量作为我的首选解决方案。以 "QUIET" 为例,在配置文件中,我将

QUIET                  = NO

QUIET                  = $(DOXYGEN_QUIET)

然后我按照以下方式调用Doxygen

DOXYGEN_QUIET=YES doxygen configfile
或者
env DOXYGEN_QUIET=YES doxygen configfile

如果在(Bash)脚本中使用。当然,您还可以导出变量DOXYGEN_QUIET,这样您就不必为每次运行键入它。

PS!我有一个Bash脚本,可以运行多个Doxygen作业,并使用标准的-q选项通过设置DOXYGEN_QUIET来静默地运行作业。我还使用相同的技巧使用环境变量设置PROJECT_NAME。


请参阅文档段落“我可以从命令行配置doxygen吗?” - albert
嗯,我不确定你想表达什么。你指向的文档段落是被接受的答案-重复了确切的段落。我发表了我的答案,因为我更喜欢它,并认为它可能对其他人有用。 - hansfn
忽略被接受的答案,你提供对这个被接受的答案的参考作为替代方案可能更好。 - albert
请注意,如果环境变量未设置或为空,则设置将采用默认值。GENERATE_HTML = $(GENERATE_HTML) 默认为YES,因此运行 GENERATE_MAN=YES doxygen configfile 将同时生成HTML和MAN文件。 - Mark Gates

7
据我所知,这是不可能的:Doxygen的构建是通过配置文件或GUI进行配置的(与尝试记忆命令行选项名称相比要容易得多)。在命令行中键入doxygen --help以及Doxygen使用文档的文档表明,所有命令行选项都是设置读取哪个配置文件(并允许用户获取布局文件等)。

一种从命令行修改配置选项的方法是通过类似以下未经测试的方式将选项附加到配置文件中:

echo "INPUT = some file" >> Doxyfile

这将在您的Doxyfile中添加INPUT = some file,而之前的任何INPUT值都将被忽略。如果您想要追加一个项目到INPUT,您可以使用如下方法:
echo "INPUT += some file" >> Doxyfile

注意 +=。这会保留文件中先前设置的 INPUT 值。
与其附加到配置文件,你也可以使用 sed 查找和替换选项。

1
这是我最终使用sed完成的。进行文本替换,例如:sed -i 's/OPTIMIZE_OUTPUT_FOR_C = NO/OPTIMIZE_OUTPUT_FOR_C = YES/g' Doxyfile - Potney Switters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接