qmake的write_file()和system()不想创建文件

时间:2015-06-06 15:36:34

标签: qt qt5 qmake

在尝试将smth写入另一个文件时,我遇到了qmake的奇怪行为。我阅读了所有可能的手册并搜索了互联网,但没有发现任何类似的东西。更接近最简单的代码:

!system(echo 1 > d:\1.txt) {
  warning(Cant create a file)
}

它没有创建文件,也没有显示警告,这意味着操作成功。另一个例子:

var = test string
file = $$absolute_path(d:\1.txt)
message(Variable: $$var and filename: $$file)
!write_file($$pathBat, pathtowrite) {
  warning(Cant create a file)
}

此块产生输出: Project MESSAGE: Variable: test string and filename: d:/1.txt

没有任何关于文件已被创建的事实。

我已经检查了写入目录的权限:一切似乎都很好。

有人可以帮我吗?

UPD: 我找到了别的东西:message($$system(echo 1 > 1.txt))工作正常。这就是让我哭泣的原因,因为我真的不明白发生了什么。

1 个答案:

答案 0 :(得分:3)

咦!我找到了解决方案,听起来像是给自己买一些大脑。我想,每次更改项目文件时qmake都会被启动(message命令的输出证明了我的想法),但它并不是Qt中发生的事情。

我不知道究竟是怎么回事,但它解析了 .pro 文件,只进行了一些必要的操作,正如我所见system()(这将会改变一些文件),write_file()命令似乎没有被调用。

解决方案非常简单:使用Build - Launch qmake原生启动qmake。