zoukankan      html  css  js  c++  java
  • 第一个GTK程序:中国农历 之五

    生成desktop文件方法很多,有使用.desktop.in.in方式的,也有直接放一个.desktop文件方式的

    其实两者差别不大,因为对于我们来说,一个工程的.desktop基本上确定的。

    比如使用.desktop.in.in方式,我们在根目录下面创建一个data目录,将.desktop.in.in文件及Makefile.am文件放入其中

    [Desktop Entry]
    _Name=Lunar Calendar
    _Name[zh_CN]=中国农历
    _GenericName=Lunar Calendar
    TryExec=@PACKAGE@
    Exec=@PACKAGE@
    Icon=pixmaps/@PACKAGE@.png
    Terminal=false
    Type=Application
    Categories=Application;GTK;utiliy;
    StartupNotify=true
    Encoding=UTF-8
    @INTLTOOL_DESKTOP_RULE@
    
    SUBDIRS =
    
    desktop_in_in_files = lunarcalendar.desktop.in.in
    desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
    
    desktopdir = $(datadir)/applications
    desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
    
    gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
    
    install-data-hook: update-icon-cache
    uninstall-hook: update-icon-cache
    update-icon-cache:
        if test -z "$(DESTDIR)"; then \
           echo "Updating Gtk icon cache."; \
           $(gtk_update_icon_cache); \
        else \
           echo "*** Icon cache not updated.  After (un)install, run this:"; \
           echo "***   $(gtk_update_icon_cache)"; \
        fi
    
    EXTRA_DIST = \
        $(desktop_DATA)     
    
    DISTCLEANFILES = \
        $(desktop_in_files) \
        $(desktop_DATA)

    对于这种方式,关键在于在Makefile.am中增加一个INTLTOOL_DESKTOP_RULE项

    另外,由于使用的是.desktop.in.in方式,会使用到intltool工具,因此,我们在configure.ac中增加测试IT_PROG_INTLTOOL(0.35.6)

    我们现在根目录下的Makefile.am中的SUBDIRS中增加data目录,重新使用autogen.sh/configure/make/make install,就可以自动将.desktop生成并安装在对应的application目录下了

    此时打包的源代码文件:lunarcalendar.0.0.5.zip

    直接放一个.desktop那就更简单了,写一个.desktop文件及Makefile.am,依然放在data目录

    [Desktop Entry]
    Name=Lunar Calendar
    Name[zh_CN]=中国农历
    GenericName=Lunar Calendar
    GenericName[zh_CN]=中国农历
    TryExec=lunarcalendar
    Exec=lunarcalendar
    Icon=pixmaps/lunarcalendar.png
    Terminal=false
    Type=Application
    Categories=Application;GTK;utiliy;
    StartupNotify=true
    Encoding=UTF-8
    appdir = $(datadir)/applications
    
    app_DATA = *.desktop
    
    EXTRA_DIST = *.desktop     

    重新使用autogen.sh/configure/make/make install,就可以自动将.desktop生成并安装在对应的application目录下了

    此时的源代码打包:lunarcalendar.0.0.6.zip

    记住,无论哪种方式,configure.ac都需要增加AC_CONFIG_FILES的内容:

    AC_CONFIG_FILES([Makefile po/Makefile.in  
                     src/Makefile
                     data/Makefile
                     data/lunarcalendar.desktop.in])

    AC_CONFIG_FILES([Makefile po/Makefile.in  
                     src/Makefile
                     data/Makefile])

    第二种方式不依赖于intltool,反倒更简单

  • 相关阅读:
    一个可以代替冗长switch-case的消息分发小框架
    [JCIP笔记](五)JDK并发包
    [JCIP笔记](四)踩在巨人的肩上
    [JCIP笔记] (三)如何设计一个线程安全的对象
    工作两年的五个感想
    [JCIP笔记] (二)当我们谈线程安全时,我们在谈论什么
    [JCIP笔记] (一)多线程的起源
    每天进步一点点------CORDIC (一)
    每天进步一点点------Alpha半透明图形叠加算法Matlab+Verilog实现
    每天进步一点点------Altium Designer Rules规则详解
  • 原文地址:https://www.cnblogs.com/eaglexmw/p/3034240.html
Copyright © 2011-2022 走看看