Hi Sascha,

Thank you for your answer. You are right. My 'hack' plugin was the only plugin depending in MitkCore! As for the other 3 questions, I think I'm following the rules. Everything is wqorking as expected, thanks again ;)

Nil


Le 2016-06-20 à 02:03, Sascha Zelzer a écrit :

Hi Nil,


1) As far as I remember, the plug-in order when calling mitkFunctionCreateBlueBerryApplication does not matter

2) ctkPluginActivator is the base class for all CTK plugin activators. The berry::AbstractUICTKPlugin class derives from it (well, from berry::Plugin which in turn implements ctkPluginActivator) and can be used in BlueBerry Workbench plug-ins. It is nor required to use it, but it provides some convenience methods for easier access to preferences, and the plug-in persistend state area for example. Last, the berry::IApplication is the main entry point for a complete application. It is tied to the org.blueberry.osgi.applications extension point. Usually, you would not create your own but rely on the one provided by MITK.

3) Q_PLUGIN_METADATA is not used by CTK or BlueBerry but required by the Qt plugin system, if I remember correctly. Using the project name as the identifier is a good idea to avoid confusion.


Now, the auto-load issue. The general problem is, that the install scripts are quite involved because they try to do the "right thing". When you install a BlueBerry application via mitkFunctionCreateBlueBerryApplication, the CMake macro is able to retrieve all transitive plug-in dependencies (also from external projects) and install them explicitly. The auto-load modules (which also need to be installed explicitly) are derived from this set of plug-ins. When you declare a module in your project to be auto-loaded with MitkCore (which belongs to the external MITK project) but none of your own plug-ins have a direct dependency on MitkCore, the CMake scripts are not able to find your auto-load module and install it (they will only "see" the auto-load modules from external projects like MITK itself). This is a bug in the system. Your work-around works because your dummy-plugin depends on MitkCore and when you install your application the scripts see the MitkCore dependency and now also has the current list of modules that are to be auto-loaded with it (including yours). A better work-around could be to just add the MitkCore dependency explicitly to one of your existing plug-ins (even if that plug-in already transitively depends on it).

I couldn't think of a quick solution to fix the install scripts in a good way yet. One approach could be to expose another CMake macro which lets you install auto-load modules explicitly yourself (essentially refactoring the mitkFunctionInstallAutoLoadModules macro).


Cheers,

Sascha


On 06/16/2016 07:19 PM, Nil Goyette wrote:

Hi all.

Is there someone who can answer my questions?
My IO module is loading now, but this is such an hack, maybe an answer to 2) could help me.
Thank you for your time.

Nil

Le 2016-06-08 à 10:32, Nil Goyette a écrit :

Hi all,

Thank you Pierre-Yves and Stefan. I did find a workaround yesterday. It's totally a hack and I don't even understand how it can work. I simply added back a plugin that I deleted earlier. The plugin only contains its activator, depends on CTK and MitkCore, requires no other plugin. It simply does nothing. And yet, my IO module works when I use it in my app. It's as if doing something random fixed my module.

Here are some questions for you!
1) I know the order of the plugins in Plugins/plugin.xml is important, but is it important in Apps/{name}/CMakeList.txt, in the list of plugins that we pass to mitkFunctionCreateBlueBerryApplication? 2) What's the differences between ctkPluginActivator, berry::AbstractUICTKPlugin and berry::IApplication? When should we use them? I discovered that we use them almost randomly. This can't be right :/ 3) Is the ID important in the activator? "Q_PLUGIN_METADATA(IID "org_imeka_app")" Should it be identical to the project's name in the plugin's cmakelist? I tested with random names and it seems to work.

Le 2016-06-08 à 03:53, Kislinskiy, Stefan a écrit :

Hi,

I remember a similar question from a coworker. He wasn’t able to get his autoload modules loaded from the package he made out of his project template based application. He also found a solution to this bug if I remember correctly: He added the corresponding bin folder of the module in charge to the path, so i. e., when you autoload with MitkCore, this would be MITK-build/bin/MitkCore/Release.

Does it help (for now) as workaround?

Best,

Stefan

*From:*Pierre-Yves Menguy [mailto:pierreyves.men...@gmail.com]
*Sent:* Dienstag, 7. Juni 2016 16:11
*To:* Nil Goyette
*Cc:* mitk-users@lists.sourceforge.net
*Subject:* Re: [mitk-users] IO module not loaded in package

Hello,

I had a similar problem when updating from 2014.10 to 2016.03 (big gap). When looking into it, I noticed my library wasn't packaged, it was left out during the process (both NSIS and ZIP).

I couldn't find a fix that involved only changes into my own code, and my code was similar to the IOExt/Diffusion module.

As a last chance, I created a MITK fork to include my own IO module (and several small changes as image compression during the writing process), and the package was able to recognize the module and ship it with my own app (which is still in a separate project).

I tried to check out the demo template on Github (commit 1552ddd), and it fails to pack with this log :

1>EXEC : warning : target 'MyAwesomeLib.dll' is not absolute...

1>EXEC : warning : target 'MyAwesomeLib.dll' does not exist...

I'm using Windows, compiling under vs2013 x64.

I'm sorry because my solution may not suit your situation, I just wanted to add my own insight and maybe get a solution if someone post it in this thread.

Pierre-Yves.

On 7 June 2016 at 15:01, Nil Goyette <nil.goye...@imeka.ca <mailto:nil.goye...@imeka.ca>> wrote:

Hi all,

On MITK2015.05, I renamed our plugin to respect a .app, .eager and .view
logic, and moved some files. Everything still work perfectly, except
when I try to run the application from a package. My IO module (using
AUTOLOAD_WITH) is not loaded but everything else is perfect.

I get no error message or warning on Windows and Linux, but I get this
on OS X:
Pre-loading library "liborg_mitk_gui_qt_ext" failed: "Cannot load
library liborg_mitk_gui_qt_ext: (dlopen(liborg_mitk_gui_qt_ext.dylib,
5): image not found"

I tried changing the order of the modules and the plugins in their
CMakeList. I tried doing exactly what you do in your IO modules (like
DiffusionIO). I tried many irrelevant things that I won't mention :) I'm
not sure what to test now.

Do you know what could cause this? I would gladly take any hints or
ideas! Because right now my only idea is to revert my huge commit, then
rename one thing at the time, compile, create a package, test, rename
the next thing, ...

Nil


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net <mailto:mitk-users@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/mitk-users




------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports.https://ad.doubleclick.net/ddm/clk/305295220;132659582;e


_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users



------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohomanageengine


_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine
_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to