Ah, sorry I accidentally only replied to Christian. Here's the original message:
Here's the probe. I is instantiated at project level where the value of 'generatedQbsFilePath' is added to the 'references' property. If you run it like this, 'targetArch' will be undefined. Probe { property path conanFile readonly property string targetArch: qbs.Architecture readonly property string buildType: qbs.buildVariant === "debug" ? "Debug" : "Release" // Conan's build_type is case-sensitive! readonly property path conanPackageDir: FileInfo.joinPaths(FileInfo.canonicalPath("."), qbs.configurationName, "conan") readonly property path generatedQbsFilePath: FileInfo.joinPaths(conanPackageDir, "/conanbuildinfo.qbs") configure: { /*...*/ var process = new Process(); process.setWorkingDirectory(conanPackageDir); process.exec("conan", ["user", "test", "-p", "test123"], true); process.exec("conan", ["install", conanPackageDir, "-s", "build_type=" + buildType, "-s", targetArch], true); console.info(process.readStdOut()); found = true; } } >> readonly property string targetArch: qbs.Architecture >You have a typo here (the 'a' should be lower-case). (If this is not the real >code: Please make sure to always copy-paste, not type up some approximation). Yeah, sorry that was a typo. It's the real code, I only added the arch property for the example because I'm not using it currently since it's not working. > Though it will still work if you set the architecture via a profile. How would I access a property set in a profile? I think I've tried it before but I probably did something wrong. Also in the blog post about the release of qbs 1.15.0 it says the following: Probes on the project level are now evaluated before Profile items. That way a Qbs project can easily interface to package managers like Conan or vcpkg and resolve all build dependencies including compiler toolchains in a clean and platform-agnostic way. [...] Doesn't that mean that profile specific properties are inaccessible at the time the probe is evaluated? > Note that such an architecture-agnostic Conan probe breaks if you are going > to multiplex a product over different architectures At the moment I'm not using multiplexing but that is a good point and something to consider. > In that case it would > better to put the probe into the product or even a separate module. Make > every product in your project depend on that module. How would I reference the qbs file generated by conan though? I'm only doing it with this project level probe because I thought there was no other way, or is there? Leon On 1/30/20, 1:28 PM, "Qbs on behalf of Richard Weickelt" <qbs-boun...@qt-project.org on behalf of rich...@weickelt.de> wrote: >> Here's the probe. I is instantiated at project level where the value of >> 'generatedQbsFilePath' is added to the 'references' property. Leon, would you please post your probe code to the mailing list? I am generally interested in Qbs Conan integration and would like to see how others do it. > That's generally a problem. Modules are per-product, and with very few > exceptions (constants like qbs.hostOS) will not have proper values on the > project level. Though it will still work if you set the architecture via > a profile. If you know what architecture your project will be built for, specify a project property and set this from command line (or in Qt Creator). Note that such an architecture-agnostic Conan probe breaks if you are going to multiplex a product over different architectures. In that case it would better to put the probe into the product or even a separate module. Make every product in your project depend on that module. The probe should only run a single time for the whole project. Then you should be able to use properties from the qbs module as inputs of the probe. Richard _______________________________________________ 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