2016-03-23 2 views
2

В руководстве qmake имеется функция touch, чтобы обновить отметку времени файла, см.: touch(filename, reference_filename). Рекомендуется here обновить временную метку на файле, например:Функция qmake touch на окнах

version.commands = touch $$version.target 

Примечание: QMAKE вручную документы два параметра, например:

version.commands = touch $$version.target $$version.depends 

Однако, я не могу получить touch функцию работайте в Windows с помощью любого вызова. Я подозреваю, что qmake просто вызвать команду linuxtouch, так как она отлично работает на Fedora 23.

Обойти это создать touch.cmd командный файл с на Windows, например:

@COPY /B %1+,, %1 

и использовать следующее .pro файл:

version.commands = $$system(touch $$version.target) 

Но я предпочел бы использовать функцию QMAKE touch ...

Каков правильный способ вызвать его в файле .pro, чтобы он работал в Windows?

+0

system (@COPY/B file.name "+ ,,") - отлично работал для меня – oklas

+0

Это тоже работало для меня @oklas, но это еще не неуловимое 'qmake touch'. Включите [bash в Windows 10] (https://msdn.microsoft.com/en-us/commandline/wsl/about) ... – kenba

ответ

0

При использовании qmake важно помнить, что происходит при вызове qmake и что происходит во время последующего вызова make/nmake.

Все, что указано после version.commands =, будет выполнено, когда make будет вызван.

С другой стороны, touch() - это функция qmake, которая будет вызываться при запуске qmake.

В настоящее время в Qt-исходном коде dev присутствует только 4 приложения touch() в самой Qt, все в каталоге qtbase/mkspecs/features, и ни один из них в контексте конструкции .commands.