On 05/27/2014 05:36 PM, Kevin Chaves wrote:
>  > Possibly. I guess it depends on what exactly you want to do.
>
> One example is to build qwt and export the paths to the headers and
> .lib. After this initial build we shouldn't have to worry about building
> it again in the project tree. The applications that use it need to be
> configured to link to the static libraries. Now apply that example to a
> bunch of third party libraries that aren't going to be touched on a
> regular basis.

So I suppose something like this could work:

StaticLibrary {
     // name etc.
     Depends { name: "Qt.core" }
     Transformer {
         Artifact {
             fileName: "xyz" // Can be hardcoded. Does not determine 
anything in the case, but needs to match whatever make produces.
             fileTags: "staticlibrary"
         }
         prepare: {
            var qmakeCmd = new Command(Qt.core.binPath + "/qmake", "["-r", 
<path to foreign project>]);
            qmakeCmd.description = "qmake"
             qmakeCmd.workingDirectory = product.buildDirectory + 
product.name;
            var makeCmd = new Command("make", ["-s"]);
            makeCmd.workingDirectory = qmakeCmd.workingDirectory;
            return [qmakeCmd, makeCmd];
        }
     }

     Export {
         Depends { name: "cpp" }
         cpp.includes: [<path to headers>]
     }
}


Completely untested, but something like this would be my first attempt. 
Of course, if you want to do this for more than one product, you'd put 
the transformer into a module and make the location of the top-level 
project file and the headers properties of that module. Then a simple
     Depends { name: "<product name>" }
in another qbs file should be enough, unless I'm overlooking some basic 
issue.


Christian
_______________________________________________
QBS mailing list
QBS@qt-project.org
http://lists.qt-project.org/mailman/listinfo/qbs

Reply via email to