我正在调试由(IIRC)KDEPluginLoader类加载的插件。
问题在于,每当我对插件进行修改时,都不会看到它们。
这是因为应用程序正在从“系统插件区域”加载插件。我不想把这个插件放在那个区域。 (而且我真的不应该这样做。)但是lsof指向系统区域中的插件。
如何让应用程序首先从编译目录加载插件?
答案 0 :(得分:0)
默认插件文件夹
全局路径旁边,例如
/usr/share/kde4/services/*.desktop
/usr/lib64/kde4/*.so
也扫描本地路径,即
~/.kde4/share/kde4/services/*.desktop
~/.kde4/lib64/kde4/*.so
第一次将库复制到其中一个路径时,必须启动kbuildsycoca4
(代表:K Build SYstem COnfiguration CAche)。 KDE的插件系统使用此缓存来快速搜索服务(插件)。
请注意,.desktop文件中的信息必须指向正确的库文件名。例如,/usr/share/kde4/services/ktexteditor_hlselection.desktop
说:
X-KDE-Library=ktexteditor_hlselection
因此KDE的插件架构将寻找:
/usr/lib64/kde4/ktexteditor_hlselection.so
~/.kde4/lib64/kde4/ktexteditor_hlselection.so
主文件夹中的那个具有更高的优先级。
自定义插件文件夹
您可以告诉KDE查看服务(.desktop文件)和库(* .so文件)的更多文件夹。这需要您设置多个环境文件夹,例如:
export LD_LIBRARY_PATH=/home/me/folder/lib:$LD_LIBRARY_PATH
export XDG_DATA_DIRS=$XDG_DATA_DIRS:/path/to/share
后者将搜索:/ path / to / share / kde4 / services / for * .desktop files。
确保在设置了环境变量的情况下运行kbuildsycoca4。然后从设置了环境变量的shell启动应用程序。
我没有对此进行测试,因此这些说明尤其是关于XDG_DATA_DIRS的说明可能无法开箱即用。但它应该让你更接近你的目标。
更新:如果您已在其中一个服务文件夹中拥有相应的.desktop文件,则不需要桌面文件和XDG_DATA_DIRS。因此,在这种情况下设置LD_LIBRARY_PATH应该可以解决问题。