I'm struggling to link a static lib that depends on an external library.

Using Qbs 1.7.0 with Gcc 5.4.0 on Linux.

It seems to me that PkgConfigProbe should strip "-l" out of the libs so that cpp.staticLibraries can be used. Disabling the as-needed shouldn't be necessary.

Or am I missing something ?

example.qbs:
import qbs
import qbs.Probes as Probes

Project {
    minimumQbsVersion: "1.6"

    CppApplication {
        files: "main.cpp"
        Depends {name: "static"}
        cpp.linkerFlags: "-v"
    }

    StaticLibrary {
        name: "static"
        Depends {name: "cpp"}
        files: "lib.*"

        Probes.PkgConfigProbe {id: ext; name: "libudev" }

        Export {
            // Q: How to export external link library dependancy ?
            Depends {name: "cpp"}
            // 1. Fails: Cannot find -l-ludev
//            cpp.staticLibraries: ext.libs
            // 2. Fails: linkerFlags appear before input artifacts
            //           so as-needed flag discards -ludev
//            cpp.linkerFlags: ext.libs
            // 3. Success, but only if we know lib name
//            cpp.staticLibraries: ext.found ? "udev" : original
            // 4. Success: work-around for wrong Qbs ordering
            cpp.linkerFlags: ["--no-as-needed"].concat(ext.libs)
        }
    }
}

main.cpp:
#include "lib.h"

int main(int argc, char *argv[])
{
    open();
}

lib.h:
void open();

lib.cpp:
#include "lib.h"
#include <libudev.h>

void open()
{
    struct udev *udev = udev_new();
}
_______________________________________________
Qbs mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/qbs

Reply via email to