2015-08-09 18:53 GMT+03:00 Richard Weickelt <[email protected]>: > > I'm trying to link inter-dependent libraries, but as qbs merges the list > of > > libraries it seems to be impossible now. > > I had a somehow related question some time ago [1] and created QBS-701 [2] > which You may want to support. It addresses the same procedure. >
Thanks for the links. I think whole-archive isn't completely the same option as start/end-group, but in my particular case it would really solve the problem. > > > For example there are two libraries: liba.a and libb.a. liba.a uses > symbols > > from libb.a and libb.a uses symbols from liba.a. Then using gcc they > must be > > linked with the following command line: "-la -lb -la". > > ... or by the use of --start-group and --end-group [3] > > > But I can't get this > > behavior using cpp.staticLibraries property, because qbs passes each > library > > only once. So in such situation the only way is to use low level > linkerFlags. > > You could try an intermediate static library product with dependencies to > all Your external archives so that these are linked together into one > comprehensive archive. But I'm not sure, if the existing linker rules in > QBS > would produce the desired result. > Unfortunately current static library linker rule just sets cpp.staticLibraries property for the output artifact. So again I would get each library specified once in linker options. > > > Things become more complicated if one of this libraries is produced by > qbs, > > while another one is an external library. I don't know how to workaround > in > > such case without using qbs internals (artifact paths). > > Again, could intermediate products help here? > This case is what I have in my project. I could solve this by writing a rule for merging two libraries by hand. But I think qbs must provide built-in tool for this. > > > And finally two inter-dependent libraries built by qbs would produce > graph > > cycle error. > > Could You maybe solve A<--B<--A by splitting A into A1 and A2 (but pointing > to the same code) and B only depending on the headers of A1 whereas A2 > depends on B? > Indeed this case could be solved by reorganizing source code. But qbs may provide some tool for this case too. > > Richard > > > [1] > http://lists.qt-project.org/pipermail/qbs/2014-November/001052.html > [2] https://bugreports.qt.io/browse/QBS-701 > [3] > > http://stackoverflow.com/questions/5651869/gcc-what-are-the-start-group-and-end-group-command-line-options > _______________________________________________ > QBS mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/qbs > -- С уважением, / Best regards Любимов Илья / Ilya Lyubimov
_______________________________________________ QBS mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/qbs
