05.05.2022 12:14, Christian Kandeler пишет:
On 5/5/22 11:00, Карелин Павел wrote:

05.05.2022 10:47, Christian Kandeler пишет:
On 5/4/22 18:18, Карелин Павел wrote:
Christian, how would you solve my problem?
After the project is built, the deb-package is assembled. To build the deb-package, you need a list of dependent libraries (not all, only parts, system dependencies no required). For example this list:
/opt/ffmpeg/4.4/lib/libavutil.so*
/opt/ffmpeg/4.4/lib/libswscale.so*
/opt/ffmpeg/4.4/lib/libswresample.so*
/opt/opencv/4.5.5/lib/libopencv_core.so*
/opt/opencv/4.5.5/lib/libopencv_calib3d.so*
/opt/opencv/4.5.5/lib/libopencv_imgproc.so*

I can get library paths and names of so-modules from dependencies:

Depends { name: "lib.ffmpeg" }
Depends { name: "lib.opencv" }

How can I create such a list and put it in the package_build_info file? With the rules?
lib.ffmpeg and lib.opencv are modules in your projects?
Yes, they are modules. I use my own QBS-extensions to include third-party assembled libraries in my projects (https://github.com/hkarel/QbsExt/tree/master/modules/lib).
Then I think the correct way is to

    - collect these libraries in a Group in the respective module

    - mark them as target artifacts (see https://doc.qt.io/qbs/qml-qbslanguageitems-group.html#filesAreTargets-prop)
    - give them a suitable tag

    - on the consuming side, create a rule whose inputsFromDependencies matches that tag and in this rule, do whatever you need to do.
Tried to follow you recommendation:

--- LibModule ---
Module {
    id: libmod
    property string prefix
    property string version: ""

    property bool enabled: true
    property bool useSystem: false

    property string includeSuffix: "/include"
    property string libSuffix: "/lib"

    property path includePath: (useSystem || !enabled)
                               ? undefined
                               : prefix + (version.length ? "/" + version : "") + includeSuffix
    property path libraryPath: (useSystem || !enabled)
                               ? undefined
                               : prefix + (version.length ? "/" + version : "") + libSuffix
    property var dynamicLibraries: ["sodium"]
    property var staticLibraries: []
    ...
    Group {
        //name: "package-build"
        fileTags: "package-build"
        filesAreTargets: true
        files: {
            var libfiles = [];
            if (!libmod.useSystem && libmod.enabled)
                for (var i in libmod.dynamicLibraries) {
                    libfiles.push(
                        libmod.libraryPath +
("/lib{0}.so*").format(libmod.dynamicLibraries[i]))
                }

            console.info("=== libfiles ===");
            console.info(libfiles);

            return libfiles;
        }
    }
} // Module

LibModule {
    id: sodium
    version: "1.0.x"
    prefix: "/opt/sodium"
    checkingHeaders:  ["sodium.h"]
    dynamicLibraries: ["sodium"]
    staticLibraries:  ["sodium"]
}

Product {
    name: "ToxPhone"
    ...
    Depends { name: "lib.sodium" }
    ...
    lib.sodium.version:   project.sodiumVersion
    //lib.sodium.useSystem: project.useSystemSodium

    Rule {
        id: pkgbuild
        //inputs: ["package-build"]
        inputsFromDependencies: ["package-build"]

        Artifact {
            fileTags: ["package-build-file"]
            filePath: FileInfo.joinPaths(project.buildDirectory, "package_build_info")
        }
        prepare: {
            var outputFile = FileInfo.joinPaths(project.buildDirectory, "package_build_info");
            console.info("=== outputFile ===");
            console.info(outputFile);
        }
    }

} // Product

The inscription "=== outputFile ===" is never printed. What am I doing wrong?

Christian

_______________________________________________
Qbs mailing list
Qbs@qt-project.org
https://lists.qt-project.org/listinfo/qbs
_______________________________________________
Qbs mailing list
Qbs@qt-project.org
https://lists.qt-project.org/listinfo/qbs

Reply via email to