11#include <QtCore/QDateTime>
12#include <QtCore/QJsonArray>
13#include <QtCore/QJsonObject>
14#include <QtCore/QJsonDocument>
61 str << reinterpret_cast<const wchar_t *>(
s.utf16());
71 using SourceTargetMapping = std::pair<QString, QString>;
82 for (
int i = m_files.
size() - 1;
i >= 0; --
i) {
83 if (m_files.
at(
i).second == targetDirectory)
92 for (
const SourceTargetMapping &
mapping : m_files) {
104 for (
const SourceTargetMapping &
mapping : m_files) {
128 SourceTargetMappings m_files;
170 QStringList *dependentLibraries = 0,
unsigned *wordSize = 0,
171 bool *isDebug = 0,
bool isMinGW =
false,
unsigned short *machineArch =
nullptr);
174# if !defined(IMAGE_FILE_MACHINE_ARM64)
175# define IMAGE_FILE_MACHINE_ARM64 0xAA64
177QString getArchString (
unsigned short machineArch);
205template <
class DirectoryFileEntryFunction>
207 DirectoryFileEntryFunction directoryFileEntryFunction,
208 const QString &targetDirectory,
213 const QFileInfo sourceFileInfo(sourceFileName);
214 const QString targetFileName = targetDirectory + u
'/' + sourceFileInfo.fileName();
216 std::wcout <<
"Checking " << sourceFileName <<
", " << targetFileName <<
'\n';
218 if (!sourceFileInfo.exists()) {
223 const QFileInfo targetFileInfo(targetFileName);
225 if (sourceFileInfo.isSymLink()) {
226 const QString sourcePath = sourceFileInfo.symLinkTarget();
228 if (relativeSource.contains(u
'/')) {
238 if (targetFileInfo.exists()) {
239 if (!targetFileInfo.isSymLink()) {
245 if (relativeSource == relativeTarget)
247 QFile existingTargetFile(targetFileName);
257 if (sourceFileInfo.isDir()) {
263 bool created =
false;
264 if (targetFileInfo.exists()) {
265 if (!targetFileInfo.isDir()) {
271 QDir d(targetDirectory);
273 std::wcout <<
"Creating " << targetFileName <<
".\n";
275 created =
d.mkdir(sourceFileInfo.fileName());
292 QDir d(targetFileName);
294 if (entries.isEmpty() || (entries.size() == 1 && entries.first() ==
QLatin1StringView(
"qmldir"))) {
295 if (!
d.removeRecursively()) {
307 if (targetFileInfo.exists()) {
309 && targetFileInfo.lastModified() >= sourceFileInfo.lastModified()) {
311 std::wcout << sourceFileInfo.fileName() <<
" is up to date.\n";
313 json->
addFile(sourceFileName, targetDirectory);
316 QFile targetFile(targetFileName);
325 std::wcout <<
"Updating " << sourceFileInfo.fileName() <<
".\n";
335 QFile targetFile(targetFileName);
344 json->
addFile(sourceFileName, targetDirectory);
void addFile(const QString &source, const QString &target)
void removeTargetDirectory(const QString &targetDirectory)
QByteArray toJson() const
QByteArray toList(ListOption option, const QDir &base) const
QStringList operator()(const QDir &dir) const
NameFilterFileEntryFunction(const QStringList &nameFilters)
static QChar separator()
Returns the native directory separator: "/" under Unix and "\\" under Windows.
QString relativeFilePath(const QString &fileName) const
Returns the path to fileName relative to the directory.
static QString toNativeSeparators(const QString &pathName)
bool setPermissions(Permissions permissionSpec) override
Sets the permissions for the file to the permissions specified.
bool copy(const QString &newName)
Copies the file named fileName() to newName.
bool remove()
Removes the file specified by fileName().
Permissions permissions() const override
\reimp
QString errorString() const
Returns a human-readable description of the last device error that occurred.
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
QByteArray toJson(JsonFormat format=Indented) const
\inmodule QtCore\reentrant
iterator insert(const QString &key, const QJsonValue &value)
Inserts a new item with the key key and a value of value.
qsizetype size() const noexcept
void removeAt(qsizetype i)
const_reference at(qsizetype i) const noexcept
void append(parameter_type t)
\macro QT_RESTRICTED_CAST_FROM_ASCII
std::wstring toStdWString() const
Returns a std::wstring object with the data contained in this QString.
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Combined button and popup list for selecting options.
QList< QString > QStringList
Constructs a string list that contains the given string, str.
DBusConnection const char DBusError * error
#define Q_DECLARE_FLAGS(Flags, Enum)
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
GLsizei GLsizei GLenum void * binary
GLsizei GLsizei GLchar * source
GLsizei const GLchar *const * path
GLenum GLenum GLenum GLenum mapping
#define QStringLiteral(str)
static QString errorMessage(QUrlPrivate::ErrorCode errorCode, const QString &errorSource, qsizetype errorPosition)
QString findD3dCompiler(Platform platform, const QString &qtBinDir, unsigned wordSize)
@ WindowsDesktopMsvcIntel
@ WindowsDesktopClangMinGW
@ WindowsDesktopClangMsvc
bool runProcess(const QString &binary, const QStringList &args, const QString &workingDirectory=QString(), unsigned long *exitCode=0, QByteArray *stdOut=0, QByteArray *stdErr=0, QString *errorMessage=0)
QStringList findDxc(Platform platform, const QString &qtBinDir, unsigned wordSize)
QStringList findSharedLibraries(const QDir &directory, Platform platform, DebugMatchMode debugMatchMode, const QString &prefix=QString())
QString findInPath(const QString &file)
bool createSymbolicLink(const QFileInfo &source, const QString &target, QString *errorMessage)
std::wostream & operator<<(std::wostream &str, const QString &s)
bool platformHasDebugSuffix(Platform p)
@ RemoveEmptyQmlDirectories
@ SkipQmlDesignerSpecificsDirectories
bool createDirectory(const QString &directory, QString *errorMessage, bool dryRun)
static const char windowsSharedLibrarySuffix[]
bool readPeExecutable(const QString &peExecutableFileName, QString *errorMessage, QStringList *dependentLibraries=0, unsigned *wordSize=0, bool *isDebug=0, bool isMinGW=false, unsigned short *machineArch=nullptr)
bool updateFile(const QString &sourceFileName, const QStringList &nameFilters, const QString &targetDirectory, unsigned flags, JsonOutput *json, QString *errorMessage)
QStringList findDependentLibraries(const QString &executableFileName, QString *errorMessage)
bool isBuildDirectory(Platform platform, const QString &dirName)
bool patchQtCore(const QString &path, QString *errorMessage)
QMap< QString, QString > queryQtPaths(const QString &qmakeBinary, QString *errorMessage)
QString sharedLibrarySuffix()
const char * qmakeInfixKey
QString normalizeFileName(const QString &name)