Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
main.cpp File Reference

(5221f7d8f0144bf81a58e151a2bbd79d1563ae05)

#include <QCoreApplication>
#include <QStringList>
#include <QDir>
#include <QDirIterator>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>
#include <QDebug>
#include <QDataStream>
#include <QXmlStreamReader>
#include <QStandardPaths>
#include <QUuid>
#include <QDirListing>
#include <QElapsedTimer>
#include <QRegularExpression>
#include <QSettings>
#include <QHash>
#include <QSet>
#include <QMap>
#include <depfile_shared.h>
#include <shellquote_shared.h>
#include <algorithm>
Include dependency graph for main.cpp:

Go to the source code of this file.

Classes

struct  QtDependency
struct  QtInstallDirectoryWithTriple
struct  Options
struct  GradleBuildConfigs

Macros

#define QT_POPEN_READ   "r"

Typedefs

typedef QMap< QByteArray, QByteArrayGradleProperties

Enumerations

enum  PackageType {
  AAB , AAR , UnsignedAPK , SignedAPK ,
  AAB , AAR , UnsignedAPK , SignedAPK
}
enum  ErrorCode {
  Success , SyntaxErrorOrHelpRequested = 1 , CannotReadInputFile = 2 , CannotCopyAndroidTemplate = 3 ,
  CannotReadDependencies = 4 , CannotCopyGnuStl = 5 , CannotCopyQtFiles = 6 , CannotFindApplicationBinary = 7 ,
  CannotCopyAndroidExtraLibs = 10 , CannotCopyAndroidSources = 11 , CannotUpdateAndroidFiles = 12 , CannotCreateAndroidProject = 13 ,
  CannotBuildAndroidProject = 14 , CannotSignPackage = 15 , CannotInstallApk = 16 , CannotCopyAndroidExtraResources = 19 ,
  CannotCopyApk = 20 , CannotCreateRcc = 21 , CannotGenerateJavaQmlComponents = 22 , Success ,
  SyntaxErrorOrHelpRequested = 1 , CannotReadInputFile = 2 , CannotCopyAndroidTemplate = 3 , CannotReadDependencies = 4 ,
  CannotCopyGnuStl = 5 , CannotCopyQtFiles = 6 , CannotFindApplicationBinary = 7 , CannotCopyAndroidExtraLibs = 10 ,
  CannotCopyAndroidSources = 11 , CannotUpdateAndroidFiles = 12 , CannotCreateAndroidProject = 13 , CannotBuildAndroidProject = 14 ,
  CannotSignPackage = 15 , CannotInstallApk = 16 , CannotCopyAndroidExtraResources = 19 , CannotCopyApk = 20 ,
  CannotCreateRcc = 21 , CannotGenerateJavaQmlComponents = 22
}
enum  PackageType {
  AAB , AAR , UnsignedAPK , SignedAPK ,
  AAB , AAR , UnsignedAPK , SignedAPK
}
enum  ErrorCode {
  Success , SyntaxErrorOrHelpRequested = 1 , CannotReadInputFile = 2 , CannotCopyAndroidTemplate = 3 ,
  CannotReadDependencies = 4 , CannotCopyGnuStl = 5 , CannotCopyQtFiles = 6 , CannotFindApplicationBinary = 7 ,
  CannotCopyAndroidExtraLibs = 10 , CannotCopyAndroidSources = 11 , CannotUpdateAndroidFiles = 12 , CannotCreateAndroidProject = 13 ,
  CannotBuildAndroidProject = 14 , CannotSignPackage = 15 , CannotInstallApk = 16 , CannotCopyAndroidExtraResources = 19 ,
  CannotCopyApk = 20 , CannotCreateRcc = 21 , CannotGenerateJavaQmlComponents = 22 , Success ,
  SyntaxErrorOrHelpRequested = 1 , CannotReadInputFile = 2 , CannotCopyAndroidTemplate = 3 , CannotReadDependencies = 4 ,
  CannotCopyGnuStl = 5 , CannotCopyQtFiles = 6 , CannotFindApplicationBinary = 7 , CannotCopyAndroidExtraLibs = 10 ,
  CannotCopyAndroidSources = 11 , CannotUpdateAndroidFiles = 12 , CannotCreateAndroidProject = 13 , CannotBuildAndroidProject = 14 ,
  CannotSignPackage = 15 , CannotInstallApk = 16 , CannotCopyAndroidExtraResources = 19 , CannotCopyApk = 20 ,
  CannotCreateRcc = 21 , CannotGenerateJavaQmlComponents = 22
}

Functions

auto openProcess (const QString &command)
bool goodToCopy (const Options *options, const QString &file, QStringList *unmetDependencies)
bool checkCanImportFromRootPaths (const Options *options, const QString &absolutePath, const QString &moduleUrl)
bool readDependenciesFromElf (Options *options, const QString &fileName, QSet< QString > *usedDependencies, QSet< QString > *remainingDependencies)
QString architectureFromName (const QString &name)
static QString execSuffixAppended (QString path)
static QString batSuffixAppended (QString path)
QString defaultLibexecDir ()
static QString llvmReadobjPath (const Options &options)
QString fileArchitecture (const Options &options, const QString &path)
bool checkArchitecture (const Options &options, const QString &fileName)
void deleteMissingFiles (const Options &options, const QDir &srcDir, const QDir &dstDir)
Options parseOptions ()
void printHelp ()
bool quasiLexicographicalReverseLessThan (const QFileInfo &fi1, const QFileInfo &fi2)
bool alwaysOverwritableFile (const QString &fileName)
bool copyFileIfNewer (const QString &sourceFileName, const QString &destinationFileName, const Options &options, bool createSymlinksOnly=false, bool forceOverwrite=false)
GradleBuildConfigs gradleBuildConfigs (const QString &path)
QString cleanPackageName (QString packageName, bool *cleaned=nullptr)
QString detectLatestAndroidPlatform (const QString &sdkPath)
QString extractPackageName (Options *options)
bool parseCmakeBoolean (const QJsonValue &value)
bool readInputFileDirectory (Options *options, QJsonObject &jsonObject, const QString keyName)
bool readInputFile (Options *options)
bool isDeployment (const Options *options, Options::DeploymentMechanism deployment)
bool copyFiles (const QDir &sourceDirectory, const QDir &destinationDirectory, const Options &options, bool forceOverwrite=false, const QSet< QString > &excludedAbsolutePaths={})
void cleanTopFolders (const Options &options, const QDir &srcDir, const QString &dstDir)
void cleanAndroidFiles (const Options &options)
bool copyAndroidTemplate (const Options &options, const QString &androidTemplate, const QString &outDirPrefix=QString())
bool copyGradleTemplate (const Options &options)
bool copyAndroidTemplate (const Options &options)
bool copyAndroidSources (const Options &options)
bool copyAndroidExtraLibs (Options *options)
QStringList allFilesInside (const QDir &current, const QDir &rootDir)
bool copyAndroidExtraResources (Options *options)
bool updateFile (const QString &fileName, const QHash< QString, QString > &replacements)
bool updateLibsXml (Options *options)
bool updateStringsXml (const Options &options)
bool updateAndroidManifest (Options &options)
bool updateAndroidFiles (Options &options)
static QString absoluteFilePath (const Options *options, const QString &relativeFileName)
static QString resolveLibDependency (const Options *options, const QString &fileName)
QList< QtDependencyfindFilesRecursively (const Options &options, const QFileInfo &info, const QString &rootPath)
QList< QtDependencyfindFilesRecursively (const Options &options, const QString &fileName)
void readDependenciesFromFiles (Options *options, const QList< QtDependency > &files, QSet< QString > &usedDependencies, QSet< QString > &remainingDependencies)
bool readAndroidDependencyXml (Options *options, const QString &moduleName, QSet< QString > *usedDependencies, QSet< QString > *remainingDependencies)
QStringList getQtLibsFromElf (const Options &options, const QString &fileName)
bool scanImports (Options *options, QSet< QString > *usedDependencies)
bool runCommand (const Options &options, const QString &command)
bool createRcc (const Options &options)
bool readDependencies (Options *options)
bool containsApplicationBinary (Options *options)
auto runAdb (const Options &options, const QString &arguments) -> decltype(openProcess({}))
bool copyQtFiles (Options *options)
QStringList getLibraryProjectsInOutputFolder (const Options &options)
QString findInPath (const QString &fileName)
static GradleProperties readGradleProperties (const QString &path)
static bool mergeGradleProperties (const QString &path, GradleProperties properties)
bool buildAndroidProject (const Options &options)
bool uninstallApk (const Options &options)
QString packagePath (const Options &options, PackageType packageType)
bool installApk (const Options &options)
bool copyPackage (const Options &options)
bool copyStdCpp (Options *options)
static QString zipalignPath (const Options &options, bool *ok)
bool signAAB (const Options &options)
bool signPackage (const Options &options)
bool writeDependencyFile (const Options &options)
int generateJavaQmlComponents (const Options &options)
int main (int argc, char *argv[])

Variables

static const bool mustReadOutputAnyway = true
static QStringList dependenciesForDepfile
static const QHash< QByteArray, QByteArrayelfArchitectures

Macro Definition Documentation

◆ QT_POPEN_READ

#define QT_POPEN_READ   "r"

Definition at line 42 of file main.cpp.

Typedef Documentation

◆ GradleProperties

Definition at line 2905 of file main.cpp.

Enumeration Type Documentation

◆ ErrorCode [1/2]

enum ErrorCode
Enumerator
Success 
SyntaxErrorOrHelpRequested 
CannotReadInputFile 
CannotCopyAndroidTemplate 
CannotReadDependencies 
CannotCopyGnuStl 
CannotCopyQtFiles 
CannotFindApplicationBinary 
CannotCopyAndroidExtraLibs 
CannotCopyAndroidSources 
CannotUpdateAndroidFiles 
CannotCreateAndroidProject 
CannotBuildAndroidProject 
CannotSignPackage 
CannotInstallApk 
CannotCopyAndroidExtraResources 
CannotCopyApk 
CannotCreateRcc 
CannotGenerateJavaQmlComponents 
Success 
SyntaxErrorOrHelpRequested 
CannotReadInputFile 
CannotCopyAndroidTemplate 
CannotReadDependencies 
CannotCopyGnuStl 
CannotCopyQtFiles 
CannotFindApplicationBinary 
CannotCopyAndroidExtraLibs 
CannotCopyAndroidSources 
CannotUpdateAndroidFiles 
CannotCreateAndroidProject 
CannotBuildAndroidProject 
CannotSignPackage 
CannotInstallApk 
CannotCopyAndroidExtraResources 
CannotCopyApk 
CannotCreateRcc 
CannotGenerateJavaQmlComponents 

Definition at line 3468 of file main.cpp.

◆ ErrorCode [2/2]

enum ErrorCode
Enumerator
Success 
SyntaxErrorOrHelpRequested 
CannotReadInputFile 
CannotCopyAndroidTemplate 
CannotReadDependencies 
CannotCopyGnuStl 
CannotCopyQtFiles 
CannotFindApplicationBinary 
CannotCopyAndroidExtraLibs 
CannotCopyAndroidSources 
CannotUpdateAndroidFiles 
CannotCreateAndroidProject 
CannotBuildAndroidProject 
CannotSignPackage 
CannotInstallApk 
CannotCopyAndroidExtraResources 
CannotCopyApk 
CannotCreateRcc 
CannotGenerateJavaQmlComponents 
Success 
SyntaxErrorOrHelpRequested 
CannotReadInputFile 
CannotCopyAndroidTemplate 
CannotReadDependencies 
CannotCopyGnuStl 
CannotCopyQtFiles 
CannotFindApplicationBinary 
CannotCopyAndroidExtraLibs 
CannotCopyAndroidSources 
CannotUpdateAndroidFiles 
CannotCreateAndroidProject 
CannotBuildAndroidProject 
CannotSignPackage 
CannotInstallApk 
CannotCopyAndroidExtraResources 
CannotCopyApk 
CannotCreateRcc 
CannotGenerateJavaQmlComponents 

Definition at line 3468 of file main.cpp.

◆ PackageType [1/2]

Enumerator
AAB 
AAR 
UnsignedAPK 
SignedAPK 
AAB 
AAR 
UnsignedAPK 
SignedAPK 

Definition at line 3144 of file main.cpp.

◆ PackageType [2/2]

Enumerator
AAB 
AAR 
UnsignedAPK 
SignedAPK 
AAB 
AAR 
UnsignedAPK 
SignedAPK 

Definition at line 3144 of file main.cpp.

Function Documentation

◆ absoluteFilePath()

QString absoluteFilePath ( const Options * options,
const QString & relativeFileName )
static

Definition at line 2003 of file main.cpp.

◆ allFilesInside()

QStringList allFilesInside ( const QDir & current,
const QDir & rootDir )

Definition at line 1618 of file main.cpp.

◆ alwaysOverwritableFile()

bool alwaysOverwritableFile ( const QString & fileName)

Definition at line 615 of file main.cpp.

◆ architectureFromName()

QString architectureFromName ( const QString & name)

Definition at line 275 of file main.cpp.

◆ batSuffixAppended()

QString batSuffixAppended ( QString path)
static

Definition at line 292 of file main.cpp.

◆ buildAndroidProject()

bool buildAndroidProject ( const Options & options)

Definition at line 2985 of file main.cpp.

◆ checkArchitecture()

bool checkArchitecture ( const Options & options,
const QString & fileName )

Definition at line 349 of file main.cpp.

◆ checkCanImportFromRootPaths()

bool checkCanImportFromRootPaths ( const Options * options,
const QString & absolutePath,
const QString & moduleUrl )

Definition at line 2561 of file main.cpp.

◆ cleanAndroidFiles()

void cleanAndroidFiles ( const Options & options)

Definition at line 1471 of file main.cpp.

◆ cleanPackageName()

QString cleanPackageName ( QString packageName,
bool * cleaned = nullptr )

Definition at line 722 of file main.cpp.

◆ cleanTopFolders()

void cleanTopFolders ( const Options & options,
const QDir & srcDir,
const QString & dstDir )

Definition at line 1462 of file main.cpp.

◆ containsApplicationBinary()

bool containsApplicationBinary ( Options * options)

Definition at line 2708 of file main.cpp.

◆ copyAndroidExtraLibs()

bool copyAndroidExtraLibs ( Options * options)

Definition at line 1569 of file main.cpp.

◆ copyAndroidExtraResources()

bool copyAndroidExtraResources ( Options * options)

Definition at line 1633 of file main.cpp.

◆ copyAndroidSources()

bool copyAndroidSources ( const Options & options)

Definition at line 1538 of file main.cpp.

◆ copyAndroidTemplate() [1/2]

bool copyAndroidTemplate ( const Options & options)

Definition at line 1518 of file main.cpp.

◆ copyAndroidTemplate() [2/2]

bool copyAndroidTemplate ( const Options & options,
const QString & androidTemplate,
const QString & outDirPrefix = QString() )

Definition at line 1482 of file main.cpp.

◆ copyFileIfNewer()

bool copyFileIfNewer ( const QString & sourceFileName,
const QString & destinationFileName,
const Options & options,
bool createSymlinksOnly = false,
bool forceOverwrite = false )

Definition at line 623 of file main.cpp.

◆ copyFiles()

bool copyFiles ( const QDir & sourceDirectory,
const QDir & destinationDirectory,
const Options & options,
bool forceOverwrite = false,
const QSet< QString > & excludedAbsolutePaths = {} )

Definition at line 1431 of file main.cpp.

References Options::useLegacyPackaging.

◆ copyGradleTemplate()

bool copyGradleTemplate ( const Options & options)

Definition at line 1500 of file main.cpp.

◆ copyPackage()

bool copyPackage ( const Options & options)

Definition at line 3219 of file main.cpp.

◆ copyQtFiles()

bool copyQtFiles ( Options * options)

Definition at line 2786 of file main.cpp.

◆ copyStdCpp()

bool copyStdCpp ( Options * options)

Definition at line 3227 of file main.cpp.

◆ createRcc()

bool createRcc ( const Options & options)

Definition at line 2592 of file main.cpp.

◆ defaultLibexecDir()

QString defaultLibexecDir ( )

Definition at line 300 of file main.cpp.

◆ deleteMissingFiles()

void deleteMissingFiles ( const Options & options,
const QDir & srcDir,
const QDir & dstDir )

Definition at line 354 of file main.cpp.

References Options::verbose.

◆ detectLatestAndroidPlatform()

QString detectLatestAndroidPlatform ( const QString & sdkPath)

Definition at line 794 of file main.cpp.

◆ execSuffixAppended()

QString execSuffixAppended ( QString path)
static

Definition at line 284 of file main.cpp.

◆ extractPackageName()

QString extractPackageName ( Options * options)

Definition at line 817 of file main.cpp.

◆ fileArchitecture()

QString fileArchitecture ( const Options & options,
const QString & path )

Definition at line 317 of file main.cpp.

◆ findFilesRecursively() [1/2]

QList< QtDependency > findFilesRecursively ( const Options & options,
const QFileInfo & info,
const QString & rootPath )

Definition at line 2066 of file main.cpp.

◆ findFilesRecursively() [2/2]

QList< QtDependency > findFilesRecursively ( const Options & options,
const QString & fileName )

Definition at line 2089 of file main.cpp.

◆ findInPath()

QString findInPath ( const QString & fileName)

Definition at line 2886 of file main.cpp.

◆ generateJavaQmlComponents()

int generateJavaQmlComponents ( const Options & options)

Definition at line 3521 of file main.cpp.

◆ getLibraryProjectsInOutputFolder()

QStringList getLibraryProjectsInOutputFolder ( const Options & options)

Definition at line 2857 of file main.cpp.

◆ getQtLibsFromElf()

QStringList getQtLibsFromElf ( const Options & options,
const QString & fileName )

Definition at line 2240 of file main.cpp.

◆ goodToCopy()

bool goodToCopy ( const Options * options,
const QString & file,
QStringList * unmetDependencies )

Definition at line 2763 of file main.cpp.

◆ gradleBuildConfigs()

GradleBuildConfigs gradleBuildConfigs ( const QString & path)

Definition at line 676 of file main.cpp.

◆ installApk()

bool installApk ( const Options & options)

Definition at line 3185 of file main.cpp.

◆ isDeployment()

bool isDeployment ( const Options * options,
Options::DeploymentMechanism deployment )

Definition at line 1426 of file main.cpp.

◆ llvmReadobjPath()

QString llvmReadobjPath ( const Options & options)
static

Definition at line 309 of file main.cpp.

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 4027 of file main.cpp.

◆ mergeGradleProperties()

bool mergeGradleProperties ( const QString & path,
GradleProperties properties )
static

Definition at line 2927 of file main.cpp.

◆ openProcess()

auto openProcess ( const QString & command)

Definition at line 51 of file main.cpp.

◆ packagePath()

QString packagePath ( const Options & options,
PackageType packageType )

Definition at line 3151 of file main.cpp.

◆ parseCmakeBoolean()

bool parseCmakeBoolean ( const QJsonValue & value)

Definition at line 844 of file main.cpp.

◆ parseOptions()

◆ printHelp()

void printHelp ( )

Definition at line 592 of file main.cpp.

◆ quasiLexicographicalReverseLessThan()

bool quasiLexicographicalReverseLessThan ( const QFileInfo & fi1,
const QFileInfo & fi2 )

Definition at line 600 of file main.cpp.

◆ readAndroidDependencyXml()

bool readAndroidDependencyXml ( Options * options,
const QString & moduleName,
QSet< QString > * usedDependencies,
QSet< QString > * remainingDependencies )

Definition at line 2144 of file main.cpp.

◆ readDependencies()

bool readDependencies ( Options * options)

Definition at line 2645 of file main.cpp.

◆ readDependenciesFromElf()

bool readDependenciesFromElf ( Options * options,
const QString & fileName,
QSet< QString > * usedDependencies,
QSet< QString > * remainingDependencies )

Definition at line 2287 of file main.cpp.

◆ readDependenciesFromFiles()

void readDependenciesFromFiles ( Options * options,
const QList< QtDependency > & files,
QSet< QString > & usedDependencies,
QSet< QString > & remainingDependencies )

Definition at line 2118 of file main.cpp.

◆ readGradleProperties()

GradleProperties readGradleProperties ( const QString & path)
static

Definition at line 2907 of file main.cpp.

◆ readInputFile()

bool readInputFile ( Options * options)

Definition at line 914 of file main.cpp.

◆ readInputFileDirectory()

bool readInputFileDirectory ( Options * options,
QJsonObject & jsonObject,
const QString keyName )

Definition at line 854 of file main.cpp.

◆ resolveLibDependency()

QString resolveLibDependency ( const Options * options,
const QString & fileName )
static

Definition at line 2048 of file main.cpp.

◆ runAdb()

auto runAdb ( const Options & options,
const QString & arguments ) -> decltype(openProcess({}))

Definition at line 2737 of file main.cpp.

◆ runCommand()

bool runCommand ( const Options & options,
const QString & command )

Definition at line 2571 of file main.cpp.

◆ scanImports()

bool scanImports ( Options * options,
QSet< QString > * usedDependencies )

Definition at line 2332 of file main.cpp.

◆ signAAB()

bool signAAB ( const Options & options)

Definition at line 3266 of file main.cpp.

◆ signPackage()

bool signPackage ( const Options & options)

Definition at line 3353 of file main.cpp.

◆ uninstallApk()

bool uninstallApk ( const Options & options)

Definition at line 3116 of file main.cpp.

◆ updateAndroidFiles()

bool updateAndroidFiles ( Options & options)

Definition at line 1989 of file main.cpp.

References Options::verbose.

◆ updateAndroidManifest()

bool updateAndroidManifest ( Options & options)

Definition at line 1881 of file main.cpp.

◆ updateFile()

bool updateFile ( const QString & fileName,
const QHash< QString, QString > & replacements )

◆ updateLibsXml()

bool updateLibsXml ( Options * options)

Definition at line 1727 of file main.cpp.

◆ updateStringsXml()

bool updateStringsXml ( const Options & options)

Definition at line 1852 of file main.cpp.

◆ writeDependencyFile()

bool writeDependencyFile ( const Options & options)

Definition at line 3491 of file main.cpp.

◆ zipalignPath()

QString zipalignPath ( const Options & options,
bool * ok )
static

Definition at line 3250 of file main.cpp.

Variable Documentation

◆ dependenciesForDepfile

QStringList dependenciesForDepfile
static

Definition at line 49 of file main.cpp.

Referenced by copyTestQmlModuleFiles().

◆ elfArchitectures

const QHash< QByteArray, QByteArray > elfArchitectures
static
Initial value:
= {
{"aarch64", "arm64-v8a"},
{"arm", "armeabi-v7a"},
{"i386", "x86"},
{"x86_64", "x86_64"}
}

Definition at line 262 of file main.cpp.

◆ mustReadOutputAnyway

const bool mustReadOutputAnyway = true
static

Definition at line 47 of file main.cpp.