[Interest] Installation Sizes for Applications using Qt

Cristian Adam cristian.adam at qt.io
Mon Aug 30 11:01:58 CEST 2021


On 8/28/2021 3:02 AM, Ben Cottrell wrote:
> Yes, I've tried configure with these command line arguments:
>     ./configure -opensource -confirm-license -platform linux-g++ -prefix
>     /opt/6.1.2-linux-g++-static -static
> 
> I got lots of errors after running configure, about missing XCB
> libraries, so following the Ubuntu CI script, I installed them with:
>     apt install "^libxcb.*"
> 
> I installed this on Debian 11.
> 
> I managed to build a test project with cmake containing this code:
>     cmake_minimum_required(VERSION 3.20)
>     project(untitled)
>     
>     set(CMAKE_CXX_STANDARD 17)
>     set(CMAKE_AUTOMOC ON)
>     set(CMAKE_AUTORCC ON)
>     set(CMAKE_AUTOUIC ON)
>     set(CMAKE_LINKER ld.gold)
>     
>     set(CMAKE_PREFIX_PATH "/opt/6.1.2-linux-g++-static/lib/cmake")
>     
>     find_package(Qt6 COMPONENTS
>             Core
>             Gui
>             Widgets
>             REQUIRED)
>     
>     add_executable(untitled main.cpp)
>     target_link_libraries(untitled
>             Qt::Core
>             Qt::Gui
>             Qt::Widgets
>             )
> 
> Here's the source to main.cpp:
>     #include <QApplication>
>     #include <QPushButton>
>     
>     int main(int argc, char *argv[]) {
>         QApplication a(argc, argv);
>         QPushButton button("Hello world!", nullptr);
>         button.resize(200, 100);
>         button.show();
>         return QApplication::exec();
>     }
> 
> Afterwards, I used strip on untitled, reducing the size to 16MB. If I
> give it to people, I'll provide the object file if they want to relink
> it.


If you want to reduce the size of your binary you might consider using
-ltcg (Link time code generation) when building Qt.

See https://www.qt.io/blog/2019/01/02/qt-applications-lto for more 
information.

And, for your application have set(CMAKE_INTERPROCEDURAL_OPTIMIZATION 
ON) in your CMakeLists.txt file.

You might want to test first with your application, and afterwards with 
application and Qt.

The gain should be something like ~15% size decrease, which should get 
your application down to 13.6MB

Cheers,
Cristian.


More information about the Interest mailing list