Qt Creator在自定义流程步骤中的命令名称周围加上引号

时间:2015-02-21 10:11:10

标签: windows qt qt-creator

我正在尝试在构建期间添加一个简单的自定义流程步骤,以便从源目录复制文本文件到构建目录。命令只是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在命令周围插入一对引号,其中,。当然,完全搞砸了一切。这是怎么回事?如何让它停止插入引号?

2 个答案:

答案 0 :(得分:9)

好像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 表示执行string指定的命令,然后终止。您可以在命令提示符中为其他开关运行cmd/?

答案 1 :(得分:1)

执行此操作的一种方法是在.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})