Qt Creator 在自定义流程步骤中将命令名称放在引号内

Qt Creator puts quotation marks around command name in custom process step

我正在尝试在构建过程中添加一个简单的自定义流程步骤,以将文本文件从源目录复制到构建目录。该命令只是 copy /y sourceFile destFile,它真的不能再简单了。我在命令字段中有 copy,在参数字段中有 /y %{sourceDir}\Config.ini %{buildDir}\Config.ini。 Qt Creator 将命令显示为

copy /y D:\correctSourcePath\Config.ini D:\correctDestPath\Config.ini

手动执行时,它完全符合我的要求。但是当我构建项目时,它失败了,并将失败的命令显示为

"copy" /y D:\correctSourcePath\Config.ini D:\correctDestPath\Config.ini

出于某种原因,Qt Creator 在命令两边插入了一对引号,which,.当然,完全搞砸了一切。这是怎么回事,如何让它停止插入引号?

似乎 Qt Creator 试图 运行 copy.exe,但 copy 实际上只是 cmd.exe 的内部命令。尝试像这样放置您的自定义流程步骤:

Command: cmd.exe
Arguments: /c copy /y %{sourceDir}\Config.ini %{buildDir}\Config.ini

这样,Qt Creator 将 运行 cmd.exe,这将 运行 其内部 copy 命令。 /c表示执行字符串指定的命令,然后终止。您可以在其他开关的命令提示符中 运行 cmd/?

一种方法是在 .pro 文件中使用 QMAKE_POST_LINK 变量。只需添加一行:

QMAKE_POST_LINK += $$quote(copy /y D:\correctSourcePath\Config.ini D:\correctDestPath\Config.ini)

SOURCE_DIRECTORY = $$PWD/Config.ini
DESTINATION_DIRECTORY = $$PWD/Config.ini
SOURCE_DIRECTORY ~= s,/,\,g
DESTINATION_DIRECTORY ~= s,/,\,g
QMAKE_POST_LINK += $$quote(copy /y $${SOURCE_DIRECTORY} $${DESTINATION_DIRECTORY})