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

(d15fae8d4ccf1bc1627201de52a66f40b3de1e93)

#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)
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 2875 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 3429 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 3429 of file main.cpp.

◆ PackageType [1/2]

Enumerator
AAB 
AAR 
UnsignedAPK 
SignedAPK 
AAB 
AAR 
UnsignedAPK 
SignedAPK 

Definition at line 3105 of file main.cpp.

◆ PackageType [2/2]

Enumerator
AAB 
AAR 
UnsignedAPK 
SignedAPK 
AAB 
AAR 
UnsignedAPK 
SignedAPK 

Definition at line 3105 of file main.cpp.

Function Documentation

◆ absoluteFilePath()

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

Definition at line 1998 of file main.cpp.

◆ allFilesInside()

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

Definition at line 1613 of file main.cpp.

◆ alwaysOverwritableFile()

bool alwaysOverwritableFile ( const QString & fileName)

Definition at line 613 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 2955 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 2531 of file main.cpp.

◆ cleanAndroidFiles()

void cleanAndroidFiles ( const Options & options)

Definition at line 1466 of file main.cpp.

◆ cleanPackageName()

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

Definition at line 720 of file main.cpp.

◆ cleanTopFolders()

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

Definition at line 1457 of file main.cpp.

◆ containsApplicationBinary()

bool containsApplicationBinary ( Options * options)

Definition at line 2678 of file main.cpp.

◆ copyAndroidExtraLibs()

bool copyAndroidExtraLibs ( Options * options)

Definition at line 1564 of file main.cpp.

◆ copyAndroidExtraResources()

bool copyAndroidExtraResources ( Options * options)

Definition at line 1628 of file main.cpp.

◆ copyAndroidSources()

bool copyAndroidSources ( const Options & options)

Definition at line 1533 of file main.cpp.

◆ copyAndroidTemplate() [1/2]

bool copyAndroidTemplate ( const Options & options)

Definition at line 1513 of file main.cpp.

◆ copyAndroidTemplate() [2/2]

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

Definition at line 1477 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 621 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 1426 of file main.cpp.

References Options::useLegacyPackaging.

◆ copyGradleTemplate()

bool copyGradleTemplate ( const Options & options)

Definition at line 1495 of file main.cpp.

◆ copyPackage()

bool copyPackage ( const Options & options)

Definition at line 3180 of file main.cpp.

◆ copyQtFiles()

bool copyQtFiles ( Options * options)

Definition at line 2756 of file main.cpp.

◆ copyStdCpp()

bool copyStdCpp ( Options * options)

Definition at line 3188 of file main.cpp.

◆ createRcc()

bool createRcc ( const Options & options)

Definition at line 2562 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 792 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 812 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 2039 of file main.cpp.

◆ findFilesRecursively() [2/2]

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

Definition at line 2062 of file main.cpp.

◆ findInPath()

QString findInPath ( const QString & fileName)

Definition at line 2856 of file main.cpp.

◆ generateJavaQmlComponents()

int generateJavaQmlComponents ( const Options & options)

Definition at line 3482 of file main.cpp.

◆ getLibraryProjectsInOutputFolder()

QStringList getLibraryProjectsInOutputFolder ( const Options & options)

Definition at line 2827 of file main.cpp.

◆ getQtLibsFromElf()

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

Definition at line 2210 of file main.cpp.

◆ goodToCopy()

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

Definition at line 2733 of file main.cpp.

◆ gradleBuildConfigs()

GradleBuildConfigs gradleBuildConfigs ( const QString & path)

Definition at line 674 of file main.cpp.

◆ installApk()

bool installApk ( const Options & options)

Definition at line 3146 of file main.cpp.

◆ isDeployment()

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

Definition at line 1421 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 3988 of file main.cpp.

◆ mergeGradleProperties()

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

Definition at line 2897 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 3112 of file main.cpp.

◆ parseCmakeBoolean()

bool parseCmakeBoolean ( const QJsonValue & value)

Definition at line 839 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 2117 of file main.cpp.

◆ readDependencies()

bool readDependencies ( Options * options)

Definition at line 2615 of file main.cpp.

◆ readDependenciesFromElf()

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

Definition at line 2257 of file main.cpp.

◆ readDependenciesFromFiles()

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

Definition at line 2091 of file main.cpp.

References Options::verbose.

◆ readGradleProperties()

GradleProperties readGradleProperties ( const QString & path)
static

Definition at line 2877 of file main.cpp.

◆ readInputFile()

bool readInputFile ( Options * options)

Definition at line 909 of file main.cpp.

◆ readInputFileDirectory()

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

Definition at line 849 of file main.cpp.

◆ runAdb()

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

Definition at line 2707 of file main.cpp.

◆ runCommand()

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

Definition at line 2541 of file main.cpp.

◆ scanImports()

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

Definition at line 2302 of file main.cpp.

◆ signAAB()

bool signAAB ( const Options & options)

Definition at line 3227 of file main.cpp.

◆ signPackage()

bool signPackage ( const Options & options)

Definition at line 3314 of file main.cpp.

◆ uninstallApk()

bool uninstallApk ( const Options & options)

Definition at line 3077 of file main.cpp.

◆ updateAndroidFiles()

bool updateAndroidFiles ( Options & options)

Definition at line 1984 of file main.cpp.

References Options::verbose.

◆ updateAndroidManifest()

bool updateAndroidManifest ( Options & options)

Definition at line 1876 of file main.cpp.

◆ updateFile()

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

◆ updateLibsXml()

bool updateLibsXml ( Options * options)

Definition at line 1722 of file main.cpp.

◆ updateStringsXml()

bool updateStringsXml ( const Options & options)

Definition at line 1847 of file main.cpp.

◆ writeDependencyFile()

bool writeDependencyFile ( const Options & options)

Definition at line 3452 of file main.cpp.

◆ zipalignPath()

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

Definition at line 3211 of file main.cpp.

Variable Documentation

◆ dependenciesForDepfile

QStringList dependenciesForDepfile
static

Definition at line 49 of file main.cpp.

◆ 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.