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