[QBS] How to use linking dependences of the third-party libraries [part2]

Denis Shienkov denis.shienkov at gmail.com
Tue Feb 3 09:04:17 CET 2015


Ok. Clear, thanks.

2015-02-02 16:56 GMT+03:00 Christian Kandeler <
christian.kandeler at theqtcompany.com>:

> On 02/01/2015 08:35 PM, Denis Shienkov wrote:
> > Ahhh... Seems, it works with "dynamiclibrary_copy" instead of
> > "dynamiclibrary_import ",
> > but I'm not sure that it is correctly..
>
> Yes, that's what we link against for gcc-like toolchains. It's a bit of
> an implementation detail, though.
>
>
> Christian
>
> > 01.02.2015 22:22, Denis Shienkov пишет:
> >> Hi all.
> >>
> >> I want to create a wrapper around of existing 3rd DLL on windows as a
> >> separate product.
> >> This solution works only with the MSVC compiler, as says in here (in
> >> previous thread):
> >>
> >> http://lists.qt-project.org/pipermail/qbs/2014-May/000807.html
> >>
> >> My current snippet:
> >>
> >> = dllwrap.qbs =
> >>
> >> importqbs
> >> import  qbs.FileInfo
> >> import  qbs.File
> >> DynamicLibrary  {
> >>      name:  "mhstcan"
> >>      Transformer  {
> >>          Artifact  {
> >>              filePath:  product.targetName  +  ".dll"  << existing
> runtime library
> >>              fileTags:  "dynamiclibrary"
> >>          }
> >>          Artifact  {
> >>              filePath:  product.targetName  +  ".lib"  << existing
> import library
> >>              fileTags:  "dynamiclibrary_import"
> >>          }
> >>          prepare:  {
> >>              var  commands  =  []
> >>              for  (var  tag  in  outputs)  {
> >>                  for  (var  index  in  outputs[tag])  {
> >>                      var  artifact  =  outputs[tag][index];
> >>                      var  cmd  =  new  JavaScriptCommand();
> >>                      cmd.sourceFile  =  product.sourceDirectory  +
> "/"  +
> >>                              FileInfo.fileName(artifact.filePath);
> >>                      cmd.description  =  "copying  "  +
> >>                              FileInfo.fileName(cmd.sourceFile);
> >>                      cmd.highlight  =  "codegen";
> >>                      cmd.targetFilePath  =  artifact.filePath;
> >>                      cmd.sourceCode  =  function()  {
> >>                          File.copy(sourceFile,  targetFilePath);  }
> >>                      commands.push(cmd);
> >>                  }
> >>              }
> >>              return  commands;
> >>          }
> >>      }
> >> }
> >>
> >> == app.qbs ==
> >>
> >> import  qbs
> >>
> >>
> >> Application  {
> >>      name:  "app"
> >>      Depends  {  name:  "cpp"  }
> >>      Depends  {  name:  "mhstcan"  }
> >>
> >>
> >>      files:  [
> >>          "app.cpp",
> >>      ]
> >> }
> >>
> >>
> >> Briefly: I want to wrap the existing shared library mhstcan.dll (with
> import
> >> mhstcan.lib), which is compiled in MSVC, but to using in MinGW
> compiler. But all
> >> attempts are fails, because the linker does not called never.
> >>
> >> Seems, that "dynamiclibrary_import"  is defined only for the MSVC
> compiler.
> >> But the MinGW has nothing similar.
> >>
> >> I tried to:
> >>
> >> * use the "staticlibrary" instead of "dynamiclibrary_import"
> >> * convert the *.lib import file to the *.a import file and to pass to
> Artifact with
> >>    the "*.a" suffix
> >>
> >> but nothing successfully - no linker called.
> >>
> >> So, my question: is any trick for it?
> >>
> >> PS: I use QBS from the QtCreator 3.3.0 + Qt 4.8.6
> >>
> >> BR,
> >> Denis
> >>
> >
>
> _______________________________________________
> QBS mailing list
> QBS at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qbs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20150203/461a0acc/attachment.html>


More information about the Qbs mailing list