如何在QMake中使用额外目标运行多个命令

Yel*_*low 13 qt qmake

我正在使用额外的目标qmake,我正在尝试同时做两件事:创建一个新文件夹,然后将一个dll复制到该文件夹​​中.两个动作分开工作正常,但两者合在一起不起作用.

something.target = this

# This works:
# something.commands =   mkdir newFolder
# This works too (if newFolder exists)
# something.commands =   copy /Y someFolder\\file.dll newFolder

# This doesn't work:
something.commands = mkdir newFolder; \
                     copy /Y someFolder\\file.dll newFolder

QMAKE_EXTRA_TARGETS += something
PRE_TARGETDEPS += this
Run Code Online (Sandbox Code Playgroud)

我认为这是正确的语法(我在这里这里找到类似的例子),但是我收到以下错误:

> mkdir newFolder; copy /Y someFolder\\file.dll newFolder
> The syntax of the command is incorrect.
Run Code Online (Sandbox Code Playgroud)

不同平台上的语法是否有所不同?我正在使用Qt 5.0.1开发Windows 7.

Ser*_*kov 22

.commands变量的值通过qmake按原样粘贴到Makefile中的目标命令位置.qmake从值中删除任何空格并将它们更改为单个空格,因此如果没有特殊工具,则无法创建多行值.还有工具:function escape_expand.试试这个:

something.commands = mkdir newFolder $$escape_expand(\n\t) copy /Y someFolder\\file.dll newFolder
Run Code Online (Sandbox Code Playgroud)

$$escape_expand(\n\t) 添加新行字符(结束上一个命令)并使用制表文件语法指示的制表符开始下一个命令.


Chr*_*ins 6

and 运算符在 Linux 上也适用于我,奇怪的是 Windows。

something.commands = mkdir newFolder && copy /Y someFolder\\file.dll newFolder
Run Code Online (Sandbox Code Playgroud)