当PowerShell脚本更新时,Doxygen不会读取Doxyfile

时间:2017-05-10 17:53:14

标签: windows powershell documentation doxygen powershell-v4.0

美好的一天Stackoverflow。

正如标题所说,我对Doxygen有一个问题。

描述

PowerShell脚本修改我的Doxyfile的PROJECT_NUMBER变量。

然后它运行Doxygen,但它生成HTML和LaTeX中的文档,就像它正在读取默认生成的Doxy文件一样。

如果我在之前手动修改运行此脚本的Doxyfile ,通过Notepad ++,Doxygen可以正常工作,但是一旦运行该脚本,就会出现问题。

我还要提到我的Doxyfile有:

  • GENERATE_HTML = YES
  • GENERATE_LATEX = NO
  • GENERATE_MAN = YES

在实践中,Doxygen的行为如下:

.\doxygen.exe -g

\doxygen.exe .\Doxyfile

bizzarre行为现在开始了!

让我们调用我的实际Doxyfile CustomConfig,默认生成DefaultConfig

如果我生成DefaultConfig.\doxygen.exe -g,然后我通过Notepad ++用CustomConfig文本覆盖其内容,doxygen会接受Doxyfile,并生成正确的输出!

所以问题不是Doxyfile内容,而是修改文件的PowerShell。

我通过对整个内容进行简单的复制和粘贴验证了这一点:

  • 通过Notepad ++复制和粘贴:工作
  • 通过PowerShell复制和粘贴:无法正常工作

PowerShell脚本

# Replace the old PROJECT_NUMBER with the new one
$DOXY_PATH   = $env:FS_OS + "\doc"
$CONFIG_PATH = $DOXY_PATH + "\bin\Doxyfile"
$BIN_PATH    = $DOXY_PATH + "\bin\doxygen.exe"

$GIT_PATH    = $env:FS_OS
$GIT_BRANCH  = "Development"

# Get git commit number on the specified branch
$GIT_HASH   = git log $GIT_BRANCH -1 --pretty=format:%H

$PRJ_CONTENT = Get-Content $CONFIG_PATH
$PRJ_NUM = "PROJECT_NUMBER         = " + $GIT_HASH
$PRJ_CONTENT = $PRJ_CONTENT -replace "PROJECT_NUMBER\s*=\s*[A-z0-9]{40}",$PRJ_NUM
$PRJ_CONTENT | Out-File -FilePath $CONFIG_PATH

Start-Process -FilePath $BIN_PATH -ArgumentList "$CONFIG_PATH" -WorkingDirectory ($DOXY_PATH + "\bin")

复制和粘贴脚本

$var = Get-Content "./doc/bin/Doxyfile.bak"
$var | Out-File -FilePath "./doc/bin/Doxyfile"

1 个答案:

答案 0 :(得分:1)

感谢@BenH的评论,我找到了解决方案。

看起来PowerShell会自动使用BOM写入文件。

我已经找到了一个解决方案,其中包含此问题的接受答案:

Using PowerShell to write a file in UTF-8 without the BOM