Qt World Summit: Submit your Presentation

Library ABI compatibility

  • Hi,

    can anyone give me the picture on how to ensure qt picks up the right flags when I need to link a non-qt linux makefile project against a qt compiled lib.

  • Lifetime Qt Champion

    Hi and welcome to devnet,

    What kind of ABI to you have in mind ?

  • Both the project and library are C++, so name-mangling besides compiler flags affecting e.g. struct alignment etc. are at issue.

  • Lifetime Qt Champion

    Then it's up to you to ensure you are using the right stuff.

    If you are using your distribution provided Qt and development libraries, you won't have any problem. If using custom built libraries, then you should ensure that everything is using the same flags correctly.

  • The project using the custom qt lib seems to also compile qmake itself. This looks a bit circumvent to me - is this really necessary or can you e.g. take the flags and just generate a .pro file?

  • Lifetime Qt Champion

    Hi @Pppp,

    Your description is a bit vague, can you get more specific?

    You only need to compile qmake yourself if you build Qt from source code, e.g. if you cross compile for an embedded system. Otherwise using the prebuild binaries is just fine.

    And you don't even need QMake to build a Qt-based program or library; Qbs and CMake are used often for this task also. I've even seen projects with handcrafted Makefiles.


  • Sorry, I didn't mention the project is cross compile, targeting embedded.
    So I understand it's usual to compile the target-specific cross-compiler on the host platform, but is that really necessary for the makemake (qmake, not the dwarf planet) also?

  • Lifetime Qt Champion

    What are you using for cross-compilation ?

    It sounds strange that you have to re-build Qt each time you want to build your project.

  • gcc...
    So if I got that right, you just configure and manually run the same qmake binary to output for different platforms and then use the generated makefile in the parent makefile project or optionally one step earlier call qmake from the script (but generally not still one step earlier and...)?

Log in to reply