[QBS] Platform probe procedure
BogDan
bog_dan_ro at yahoo.com
Mon Jun 25 10:30:42 CEST 2012
Hi,
Sorry to bother you again with this request, we discuss about at QtCS and
I wonder if we can get it a push ... :), I'd like to help you with QtCreator
integration, I have some experience from Android plugin !
Cheers,
BogDan.
>
> Hello,
>
> I've check current "platform probe" procedure and I don't
> find it very flexible, IMHO creating an application to probe a platform is too
> complicated, as long as you have a very powerful scripting language. So, my
> proposal is to use QML to probe the platforms also.
> Because to probe for a platform you need some extra informations (e.g where is
> the toolchain, etc.), I tried to make it IDE friendly, meaning that the IDE can
> create dynamic forms to collect all the informations needed to probe for that
> platform.
>
>
> Here is a proof of concept android platform probe (I didn't check if the
> syntax if is correct or not):
>
> //////////
>
>
> import qbs.base 1.0
>
> Platform {
> name: "android" // Name of the platform
> description: "Android O.S. support" // Description, used by the
> IDE to show some info about the probe
>
> property var ndkPath
> PropertyOptions {
> name: "ndkPath" // Name of the property
> description: "Android NDK path" // The IDE will use this
> information to fill a lable before the control
> type: "path" // the type is very important for IDE, in this
> case the IDE will create a control which accepts only a path
> isValid: { // is this property valid ? This info will be used by the
> IDE to enable/disable any control which depends by this one (e.g. the toolchain
> version should be disabled till this values will become true)
> if (!File.exists(ndkPath+'/toolchains') ||
> !File.exists(ndkPath+'/platforms'))
> throw "Selected path doesn't seems to contains an
> Android NDK"
> return true
> }
> }
>
> property var toolchainVersion
> PropertyOptions {
> Depends { name: "ndkPath" } // The IDE will use this info to
> enable/dissble the control if the ndkPath is valid or not
> name: "toolchainVersion" // Name of the property
> description: "Please select the toolchain version" // The IDE
> will use this information to fill the label before the control
> type: "combobox" // the IDE will create a combobox control
> value: { // the IDE will fill the control (combobox) with these values
> and it will use only one to set the property
> if (!ndkPath.isValid) // check if the ndkPath property is set
> correctly
> throw "Please select Android NDK path first"
> var versions
> var versionFiles = File.ls(ndkPath+'/toolchains/*') // dir
> all the files from toolchains folder
> for (var ver in versionFiles)
> {
> var match = /.*-(\d+.\d+.\d+)/(ver) // get the
> version number, the files will have the following patter platform-abi-x.y.z
> where x.y.z is the gcc version.
> if (!versions.contains(match[1]))
> versions.push(match[1])
> }
> return versions
> }
>
> isValid: { // check if the version is valid
> return ndkPath.isValid &&
> toolchainVersion.value.contains(toolchainVersion)
> }
> }
>
> property bool isValid : false
>
> probe: {
> isValid = ndkPath.isValid && toolchainVersion.isValid
> return isValid
> }
> }
>
>
> //////////
>
> Cheers,
> BogDan.
> _______________________________________________
> QBS mailing list
> QBS at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qbs
>
More information about the Qbs
mailing list