[CMake] plugin dependencies and TARGET_LINK_LIBRARIES()

Andreas Pakulat apaku at gmx.de
Tue Jun 15 14:02:17 EDT 2010


On 15.06.10 22:18:04, Kishore wrote:
> How do i inform cmake when building a module that it depends on another 
> module? Does cmake need to even know that?
> 
> I am building a plugin based qt application (my first time with plugins) and my 
> situlation like with many other applications is that plugin A depends on 
> plugin B. In my application i take care to load plugin B before A. However, 
> loading plugin A fails complaining that it could not resolve links which are 
> in B. plugin B which only depends on the application loads fine.
> 
> Now, everything works fine if i declare that plugin A depends on B using the 
> TARGET_LINK_LIBRARIES() function. But for this to work, i have to declare both 
> A and B as SHARED instead of MODULE libraries.
> 
> What is the right way to go?

Thats not a real plugin system, plugins don't link against other plugins
directly. Your options are:

- extract the code from B that you need in A into the shared lib (that
  you should already have) that both A and B (and your application) link
  against

- provide an interface header from B and a way in your app for a plugin
  to get a pointer to such an interface. Then provide the necessary api
  functions you need in A in that interface as pure virtual. That way A
  can use this virtual interface to get at the B functions without
  directly linking against it.

Andreas

-- 
You will be awarded a medal for disregarding safety in saving someone.


More information about the CMake mailing list