GNOME 模組

此模組提供建置 Gnome/GLib 程式時所需的建置操作輔助工具。

注意:當您變更原始程式碼檔案時,此處的編譯指令可能無法正常運作。這是相關編譯器中的錯誤,它們沒有公開所需的相依性資訊。此問題已回報至上游,請參閱此錯誤報告。在問題修復之前,請在變更原始程式碼檔案時務必小心。

使用方式

若要使用此模組,請執行:gnome = import('gnome')。接著,以下函式將以 gnome 名稱物件的方法提供。當然,您可以使用其他任何名稱取代 gnome

gnome.compile_resources()

    gnome.compile_resources(id: string, input_file: string | File,
                            build_by_default: bool = false,
                            c_name: string | None = None,
                            dependencies: [](File, CustomTarget, CustomTargetIndex) = [],
                            export: bool = false,
                            extra_args: []string = [],
                            gresource_bundle: bool = false,
                            install_dir: string | None = None,
                            source_dir: [string] = [],
                            ): (CustomTarget, CustomTarget) | CustomTarget

此函式將 XML 檔案中指定的資源編譯成可嵌入主二進位檔中的程式碼。與建置目標類似,它會採用兩個位置引數。第一個是資源的名稱,第二個是包含資源定義的 XML 檔案。如果名稱是 foobar,Meson 會產生名為 foobar.h 的標頭檔,您接著可以在您的原始碼中包含該標頭檔。指定的資源會自動新增為產生目標的相依性。

  • c_name:在 --c-name 之後,以引數的形式傳遞至資源編譯器
  • dependencies:建置時所相依的其他目標
  • export:(新增於 0.37.0) 若為 true,則匯出產生的原始碼符號
  • extra_args:傳遞至資源的其他命令列引數
  • gresource_bundle:(新增於 0.37.0) 若為 true,則輸出 .gresource 檔案而非原始碼
  • install:(新增於 0.37.0) 若為 true,則安裝 gresource 檔案
  • install_dir:(新增於 0.37.0) 根據先前的選項,安裝標頭或套件的位置
  • install_header:(新增於 0.37.0) 若為 true,則安裝標頭檔
  • source_dir:資源編譯器應在其中尋找檔案的目錄清單

傳回包含下列項目的陣列:[c_source, header_file][gresource_bundle]

範例

gnome = import('gnome')

asresources = gnome.compile_resources(
    'as-resources', 'data/asresources.gresource.xml',
    source_dir: 'data',
    c_name: 'as'
)

executable(
    meson.project_name(),
    asresources,
    dependencies: my_deps,
    install: true
)

gnome.generate_gir()

產生 GObject 自省資料。

採用一個或多個位置引數

您要為其建置 gir 資料的一個或多個程式庫物件,或是單一可執行檔物件。

有數個關鍵字引數。其中許多引數會直接對應至 g-ir-scanner 工具,因此請參閱其文件以取得更多資訊。

  • dependencies:在自省掃描期間使用的相依性
  • extra_args:傳遞至 gir 編譯器的命令列引數
  • env:(新增於 1.2.0) 要設定的環境變數,例如 {'NAME1': 'value1', 'NAME2': 'value2'}['NAME1=value1', 'NAME2=value2'],或是 env 物件,允許更複雜的環境操作。
  • export_packages:gir 檔案匯出的額外套件
  • sources:要掃描以取得 gir 資料的原始碼清單
  • nsversion:命名空間版本
  • namespace:此 gir 物件的命名空間,決定輸出檔案
  • identifier_prefix:gir 物件的識別碼字首,例如 Gtk
  • includes:要包含的 gir 名稱清單,也可以是 GirTarget
  • header(新增於 0.43.0) 要為程式庫包含的主要 C 標頭名稱,例如 glib.h
  • include_directories:要尋找 gir 檔案的其他包含路徑
  • install:若為 true,則安裝產生的檔案
  • install_gir:(新增於 0.61.0) 覆寫 install,是否要安裝產生的 gir
  • install_dir_gir:(新增於 0.35.0) 將 gir 檔案安裝至哪個目錄;(自 0.61.0 起已棄用) 可以為 false 以停用安裝
  • install_typelib:(新增於 0.61.0) 覆寫 install,是否要安裝產生的 typelib
  • install_dir_typelib:(新增於 0.35.0) 將 typelib 檔案安裝至哪個目錄;(自 0.61.0 起已棄用) 可以為 false 以停用安裝
  • link_with:要連結的程式庫清單
  • symbol_prefix:gir 物件的符號字首,例如 gtk,(自 0.43.0 起) 允許使用多個字首的排序清單
  • fatal_warnings自 0.55.0 起,將掃描器警告轉換為嚴重錯誤。

傳回包含兩個元素的陣列,即:[gir_target, typelib_target]

gnome.genmarshal()

使用 glib-genmarshal 工具產生 marshal 檔案。第一個引數是輸出檔案的基礎名稱。

  • depends [](BuildTarget | CustomTarget | CustomTargetIndex):直接傳遞至 CustomTarget (自 0.61.0 起)
  • depend_files [](str | File):直接傳遞至 CustomTarget (自 0.61.0 起)
  • extra_args:(新增於 0.42.0) 要傳遞的其他命令列引數
  • install_dir:安裝標頭的目錄
  • install_header:若為 true,則安裝產生的標頭
  • install_dir:安裝標頭的目錄
  • install_header:若為 true,則安裝產生的標頭
  • internal:若為 true,則將產生的原始碼標記為 glib-genmarshal 的內部來源 (需要 GLib 2.54)
  • nostdinc:若為 true,則不包含 glib 中的標準封送器
  • prefix:要用於符號的字首
  • skip_source:若為 true,則略過原始碼位置註解
  • sources [](str | File) 必要:要作為輸入的原始碼清單
  • stdinc:若為 true,則包含 glib 中的標準封送器
  • valist_marshallers:若為 true,則產生 va_list 封送器

新增於 0.35.0

傳回包含兩個元素的陣列,即:[c_source, header_file]

gnome.mkenums()

使用 glib-mkenums 工具為 GObject 產生列舉檔案。第一個引數是輸出檔案的基礎名稱,除非指定了 c_templateh_template。在這種情況下,輸出檔案會是作為樣板傳遞的值的基礎名稱。

此方法基本上是 glib-mkenums 工具命令列 API 的包裝函式。它是用於列舉建立的最完整方法。

通常您會提供樣板檔案,或是將各種樣板區段手動指定為字串。

大多數程式庫和應用程式都會使用相同的標準樣板,僅進行微小的調整,在這種情況下,可以使用 gnome.mkenums_simple() 方便方法。

請注意,如果您在任何建置目標的原始碼中 #include 產生的標頭,則必須將產生的標頭新增至建置目標的原始碼清單中,以編纂相依性。對於所有產生的原始碼 (不只是 mkenums),這點都適用。

所有產生的原始碼,不只是 mkenums

  • c_template:用於產生原始碼的樣板
  • comments:傳遞至命令的註解
  • h_template:用於產生標頭的樣板
  • identifier_prefix:用於識別碼的字首
  • install_header:若為 true,則安裝產生的標頭
  • install_dir:安裝標頭的目錄
  • sources:要用來建立列舉的原始碼清單
  • symbol_prefix:用於符號的字首
  • eprod:列舉文字
  • fhead:檔案標頭
  • fprod:檔案文字
  • ftail:檔案結尾
  • vhead:值文字
  • vtail:值結尾

新增於 0.35.0

傳回包含兩個元素的陣列,即:[c_source, header_file]

gnome.mkenums_simple()

使用 glib-mkenums 工具,以大多數基於 GObject 的 C 程式庫所使用的標準樣板,為 GObject 產生列舉 .c.h 檔案。第一個引數是輸出檔案的基礎名稱。

請注意,如果您在任何建置目標的原始碼中 #include 產生的標頭,則必須將產生的標頭新增至建置目標的原始碼清單中,以編纂相依性。對於所有產生的原始碼 (不只是 mkenums_simple),這點都適用。

產生的原始碼檔案會包含傳遞至 sources 關鍵字引數的所有標頭,並使用相對於目前建置或原始碼目錄的路徑。這表示編譯產生原始碼檔案的目標必須在其 include_directories 中包含目前目錄。自 1.3.0 起,目前目錄以外的 sources 不再需要將這些目錄新增至 include_directories

  • body_prefix:主體檔案頂端的其他字首,例如用於額外的包含
  • decorator:函式宣告的可選裝飾器,例如 GTK_AVAILABLEGST_EXPORT
  • function_prefix:函式名稱的其他字首,例如,如果您想要在僅在內部使用的函式中新增前導底線
  • header_prefix:標頭檔案頂端的其他字首,例如用於額外的包含 (如果您為函式宣告指定裝飾器,可能需要這些包含)
  • install_header:若為 true,則安裝產生的標頭
  • install_dir:安裝標頭的目錄
  • identifier_prefix:用於識別碼的字首
  • sources:要用來建立列舉的原始碼清單
  • symbol_prefix:用於符號的字首

範例

gnome = import('gnome')

my_headers = ['myheader1.h', 'myheader2.h']
my_sources = ['mysource1.c', 'mysource2.c']

# will generate myenums.c and myenums.h based on enums in myheader1.h and myheader2.h
enums = gnome.mkenums_simple('myenums', sources : my_headers)

mylib = library('my', my_sources, enums,
                include_directories: my_incs,
                dependencies: my_deps,
                c_args: my_cargs,
                install: true)

新增於 0.42.0

傳回包含兩個元素的陣列,即:[c_source, header_file]

gnome.compile_schemas()

呼叫時,此方法會編譯目前目錄中的 gschema。請注意,這不是用於安裝 schema,僅在例如在測試期間於本機執行應用程式時有用。

  • build_by_default:若設定為 true,則會導致此目標在預設情況下建置,也就是說,當叫用純粹的 meson compile 時,預設值對所有建置目標類型都是 true
  • depend_files:若變更,應觸發重新編譯的 schema 來源 XML 檔案 (strfiles()configure_file()) 的檔案。

gnome.gdbus_codegen()

將指定的 XML schema 編譯為 gdbus 原始碼。採用兩個位置引數,第一個引數指定建立輸出原始碼和標頭時要使用的基礎名稱,第二個引數指定一個 XML 檔案。

  • sources:XML 檔案清單
  • interface_prefix:介面的字首
  • namespace:介面的命名空間
  • extra_args:(新增於 0.47.0) 要傳遞的其他命令列引數
  • autocleanup(新增於 0.47.0) 如果設定,則產生自動清除程式碼。可以是 noneobjectsall 其中之一
  • object_manager(新增於 0.40.0) 若為 true,則產生物件管理程式碼
  • annotations(新增於 0.43.0) 'ELEMENT'、'KEY'、'VALUE' 註解的 3 個字串清單
  • docbook(新增於 0.43.0) 產生 'PREFIX'-NAME.xml docbook 的字首
  • build_by_default:若設定為 true,則會導致此目標在預設情況下建置,也就是說,當叫用純粹的 meson compile 時,預設值對所有建置目標類型都是 true
  • install_dir:(新增於 0.46.0) 根據先前的選項,安裝標頭或套件的位置
  • install_header:(新增於 0.46.0) 若為 true,則安裝標頭檔

0.46.0 起,此函式會傳回至少兩個自訂目標的清單 (依序):一個用於原始碼,另一個用於標頭。如果傳遞該關鍵字引數,則清單會包含產生的 docbook 檔案的第三個自訂目標。

較早版本會傳回代表所有輸出的單一自訂目標。一般來說,您應該只將此目標清單新增至最上層目標的原始碼清單。

範例

gnome = import('gnome')

# The returned source would be passed to another target
gdbus_src = gnome.gdbus_codegen('example-interface',
  sources: 'com.example.Sample.xml',
  interface_prefix : 'com.example.',
  namespace : 'Sample',
  annotations : [
    ['com.example.Hello()', 'org.freedesktop.DBus.Deprecated', 'true']
  ],
  docbook : 'example-interface-doc'
)

gnome.generate_vapi()

從 gir 建立 VAPI 檔案。第一個引數是程式庫的名稱。

  • gir_dirs:要包含 gir 檔案的其他目錄
  • install:若為 true,則安裝 VAPI 檔案
  • install_dir:安裝 VAPI 檔案的位置 (預設為 datadir/vala/vapi)
  • metadata_dirs:要包含中繼資料檔案的其他目錄
  • packages:相依的 VAPI 套件
  • sources:要從中產生 VAPI 的 gir 來源
  • vapi_dirs:要包含 VAPI 檔案的其他目錄

傳回自訂相依性,該相依性可以在建置其他 VAPI 或 Vala 二進位檔時包含。

新增於 0.36.0

gnome.yelp()

  gnome.yelp(id: string, sources: ...string, sources: []string, media: []string,
             languages: []string, symlink_media: bool = true): void

使用 itstool 和 gettext 安裝 Yelp 的說明文件。第一個參數是專案 ID。

此外,來源可以作為額外的位置參數傳遞。然而,這沒有文件記錄,也從未正式支援。由於一個長久存在的錯誤,將來源作為關鍵字參數傳遞會導致位置參數來源被忽略。自 0.60.0 起,在這種情況下會發出警告。

自 0.43.0 起,如果未指定「languages」,則會改為讀取 LINGUAS 檔案。

自 0.60.0 起,已棄用位置參數來源的使用,應改用「sources」關鍵字參數。未來將會移除以位置參數形式傳遞來源的方式。

這也會建立兩個用於翻譯的目標:help-$project-update-pohelp-$project-pot

  • languages(自 0.43.0 起已棄用)翻譯的語言列表,會覆蓋 LINGUAS 檔案
  • media:媒體列表,例如圖片
  • sources:頁面列表
  • symlink_media:是否應符號連結媒體而非複製(自 0.42.0 起預設為 true

請注意,非常舊版本的 yelp 可能不支援符號連結媒體;至少 3.10 應該可以運作。

新增於 0.36.0

gnome.gtkdoc()

將 gtkdoc 文件編譯並安裝到 prefix/share/gtk-doc/html 中。接受一個位置參數:模組名稱。

  • content_files:內容檔案列表
  • dependencies:相依性列表
  • fixxref_args:要傳遞給 gtkdoc-fixxref 的參數列表
  • gobject_typesfile:類型檔案列表
  • include_directories:要傳遞給 gtkdoc-scangobj 的額外 include 路徑
  • ignore_headers:要忽略的標頭檔列表
  • html_assets:HTML 頁面的資產列表
  • html_args:要傳遞給 gtkdoc-mkhtml 的參數列表
  • install:如果為 true,則安裝產生的文件
  • install_dir:相對於 gtk-doc html 目錄或絕對路徑安裝產生的文件的目錄(預設:模組名稱)
  • main_xml:指定主要的 XML 檔案
  • main_sgml:等於 main_xml
  • mkdb_args:要傳遞給 gtkdoc-mkdb 的參數列表
  • namespace:指定要傳遞給 gtkdoc-mkdb 的命名空間
  • module_version:模組版本,會影響安裝位置和 devhelp2 檔案位置
  • scan_args:要傳遞給 gtkdoc-scan 的參數列表
  • scanobjs_args:要傳遞給 gtkdoc-scangobj 的參數列表
  • c_args:(新增於 0.48.0)要傳遞的其他編譯參數
  • src_dir:要包含的 include_directories
  • check:(自 0.52.0 起)如果為 true,則在執行單元測試時執行 gtkdoc-check。請注意,這樣做會導致每次建置時都重建文件,這通常會非常慢。通常應該僅在 CI 中啟用。

這也會建立一個 $module-doc 目標,可以用來建置文件。通常,文件只會在安裝時建置。

自 0.52.0 起,會傳回一個目標物件,該物件可以作為相依性傳遞給其他使用產生文件檔案的目標(例如,在另一個文件的 content_files 中)。

gnome.gtkdoc_html_dir()

以模組名稱作為參數,並傳回該模組的 HTML 檔案將被安裝的路徑。通常與 install_data 一起使用,以將額外的檔案(例如圖片)安裝到輸出目錄。

gnome.post_install()

自 0.57.0 起

安裝後更新各種系統範圍的快取。即使從多個子專案多次呼叫 gnome.post_install(),每個腳本也只會執行一次。如果在安裝期間指定了 DESTDIR,則將會跳過所有腳本。

它接受以下關鍵字參數

  • glib_compile_schemas:如果設定為 true,則更新 <prefix>/<datadir>/glib-2.0/schemas 中的 gschemas.compiled 檔案。
  • gio_querymodules:相對於 prefix 的目錄列表,其中將更新 giomodule.cache 檔案。
  • gtk_update_icon_cache:如果設定為 true,則更新 <prefix>/<datadir>/icons/hicolor 中的 icon-theme.cache 檔案。
  • update_desktop_database自 0.59.0 起 如果設定為 true,則更新 <prefix>/<datadir>/applications 中由桌面檔案處理的 MIME 類型快取。
  • update_mime_database自 0.64.0 起 如果設定為 true,則更新 <prefix>/<datadir>/mime 中的 MIME 類型快取。

搜尋結果為