Peringatan
Ekspatriat kekurangan staf dan tanpa dana. Ada panggilan bantuan dengan detail di bagian atas file Changes
.
Ini adalah Expat, perpustakaan C99 untuk parsing XML 1.0 Edisi Keempat, dimulai oleh James Clark pada tahun 1997. Expat adalah parser XML berorientasi aliran. Ini berarti Anda mendaftarkan penangan ke parser sebelum memulai parse. Penangan ini dipanggil ketika parser menemukan struktur terkait dalam dokumen yang sedang diurai. Tag awal adalah contoh jenis struktur yang dapat Anda daftarkan penangannya.
Expat mendukung kompiler berikut:
${today} minus 5 years
) Pengguna Windows dapat menggunakan unduhan expat-win32bin-*.*.*.{exe,zip}
, yang mencakup pustaka dan executable yang telah dikompilasi sebelumnya, dan kode sumber untuk pengembang.
Ekspatriat adalah perangkat lunak gratis. Anda boleh menyalin, mendistribusikan, dan memodifikasinya berdasarkan ketentuan Lisensi yang terdapat dalam file COPYING
yang didistribusikan bersama paket ini. Lisensi ini sama dengan lisensi Konsorsium MIT/X.
Ada tiga cara terdokumentasi menggunakan libexpat dengan CMake:
find_package
dengan Mode Modul Pendekatan ini memanfaatkan modul CMake sendiri FindEXPAT
.
Perhatikan huruf besar EXPAT
pada contoh berikut:
cmake_minimum_required ( VERSION 3.0) # or 3.10, see below
project (hello VERSION 1.0.0)
find_package (EXPAT 2.2.8 MODULE REQUIRED)
add_executable (hello
hello.c
)
# a) for CMake >=3.10 (see CMake's FindEXPAT docs)
target_link_libraries (hello PUBLIC EXPAT::EXPAT)
# b) for CMake >=3.0
target_include_directories (hello PRIVATE ${EXPAT_INCLUDE_DIRS} )
target_link_libraries (hello PUBLIC ${EXPAT_LIBRARIES} )
find_package
dengan Mode KonfigurasiPendekatan ini membutuhkan file dari…
Perhatikan expat
huruf kecil dalam contoh berikut:
cmake_minimum_required ( VERSION 3.0)
project (hello VERSION 1.0.0)
find_package (expat 2.2.8 CONFIG REQUIRED char dtd ns)
add_executable (hello
hello.c
)
target_link_libraries (hello PUBLIC expat::expat)
FetchContent
Pendekatan ini — seperti yang ditunjukkan di bawah — memerlukan CMake >=3.18 agar modul FetchContent
dan dukungannya untuk opsi SOURCE_SUBDIR
tersedia.
Harap dicatat bahwa:
FetchContent
dengan SHA1 non-rilis atau master
libexpat tidak disarankan atau dianggap didukung secara resmi.Sebagai contoh yang menarik libexpat melalui Git:
cmake_minimum_required ( VERSION 3.18)
include (FetchContent)
project (hello VERSION 1.0.0)
FetchContent_Declare(
expat
GIT_REPOSITORY https://github.com/libexpat/libexpat/
GIT_TAG 000000000_GIT_COMMIT_SHA1_HERE_000000000 # i.e. Git tag R_0_Y_Z
SOURCE_SUBDIR expat/
)
FetchContent_MakeAvailable(expat)
add_executable (hello
hello.c
)
target_link_libraries (hello PUBLIC expat)
Jika Anda membangun Expat dari check-out dari repositori Git, Anda perlu menjalankan skrip yang menghasilkan skrip konfigurasi menggunakan alat autoconf dan libtool GNU. Untuk melakukan ini, Anda harus memiliki autoconf 2.58 atau lebih baru. Jalankan skrip seperti ini:
./buildconf.sh
Setelah ini selesai, ikuti instruksi yang sama seperti untuk membangun dari distribusi sumber.
Untuk membangun Expat dari distribusi sumber, pertama-tama Anda menjalankan skrip shell konfigurasi di direktori distribusi tingkat atas:
./configure
Ada banyak opsi yang dapat Anda sediakan untuk dikonfigurasi (yang dapat Anda temukan dengan menjalankan konfigurasi dengan opsi --help
). Namun yang paling menarik adalah yang mengatur direktori instalasi. Secara default, skrip konfigurasi akan mengatur segalanya untuk menginstal libexpat ke /usr/local/lib
, expat.h
ke /usr/local/include
, dan xmlwf
ke /usr/local/bin
. Jika, misalnya, Anda lebih memilih untuk menginstal ke /home/me/mystuff/lib
, /home/me/mystuff/include
, dan /home/me/mystuff/bin
, Anda dapat configure
dengan:
./configure --prefix=/home/me/mystuff
Opsi menarik lainnya adalah mengaktifkan dukungan bilangan bulat 64-bit untuk nomor baris dan kolom serta indeks byte keseluruhan:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Namun, modifikasi tersebut akan menjadi perubahan besar pada ABI dan oleh karena itu tidak direkomendasikan untuk penggunaan umum — misalnya sebagai bagian dari distribusi Linux — melainkan untuk build dengan persyaratan khusus.
Setelah menjalankan skrip konfigurasi, perintah make
akan membangun sesuatu dan make install
akan menginstal sesuatu ke lokasi yang tepat. Lihat Makefile
untuk mempelajari tentang opsi make
tambahan. Perhatikan bahwa Anda harus memiliki izin menulis ke direktori tempat sesuatu akan diinstal.
Jika Anda tertarik untuk membangun Expat untuk memberikan informasi dokumen dalam pengkodean UTF-16 daripada UTF-8 default, ikuti petunjuk berikut (setelah menjalankan make distclean
). Harap dicatat bahwa kami mengkonfigurasi dengan --without-xmlwf
karena xmlwf tidak mendukung mode kompilasi ini (belum):
Tambalan massal file Makefile.am
untuk menggunakan libexpatw.la
sebagai nama perpustakaan:
find . -name Makefile.am -exec sed -e 's,libexpat.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i.bak {} +
Jalankan automake
untuk menulis ulang file Makefile.in
:
automake
Untuk keluaran UTF-16 sebagai unsigned short (dan string versi/kesalahan sebagai char), jalankan:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Untuk keluaran UTF-16 sebagai wchar_t
(termasuk versi/string kesalahan), jalankan:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Catatan: Yang terakhir ini juga memerlukan libc yang dikompilasi dengan -fshort-wchar
.
Jalankan make
(yang tidak termasuk xmlwf).
Jalankan make install
(sekali lagi, tidak termasuk xmlwf).
Penggunaan DESTDIR
didukung. Ini berfungsi sebagai berikut:
make install DESTDIR=/path/to/image
menimpa kumpulan dalam makefile DESTDIR
, karena prioritas pengaturan variabel adalah
Catatan: Ini hanya berlaku untuk perpustakaan Expat itu sendiri, yang membuat xmlwf versi UTF-16 dan pengujiannya saat ini tidak didukung.
Saat menggunakan Expat dengan proyek yang menggunakan autoconf untuk konfigurasi, Anda dapat menggunakan makro probing di conftools/expat.m4
untuk menentukan cara menyertakan Expat. Lihat komentar di bagian atas file itu untuk informasi lebih lanjut.
Panduan referensi tersedia di file doc/reference.html
di distribusi ini.
Sistem pembangunan CMake masih bersifat eksperimental dan mungkin akan menggantikan sistem pembangunan utama berdasarkan GNU Autotools jika sudah siap.
Untuk gambaran tentang opsi yang tersedia (non-lanjutan) untuk membangun dengan CMake:
# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ' :.*= ' | sed ' s,^--$,, '
// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=
// Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local
// Path to a program.
DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man
// Build man page for xmlwf
EXPAT_BUILD_DOCS:BOOL=ON
// Build the examples for expat library
EXPAT_BUILD_EXAMPLES:BOOL=ON
// Build fuzzers for the expat library
EXPAT_BUILD_FUZZERS:BOOL=OFF
// Build pkg-config file
EXPAT_BUILD_PKGCONFIG:BOOL=ON
// Build the tests for expat library
EXPAT_BUILD_TESTS:BOOL=ON
// Build the xmlwf tool for expat library
EXPAT_BUILD_TOOLS:BOOL=ON
// Character type to use (char|ushort|wchar_t) [default=char]
EXPAT_CHAR_TYPE:STRING=char
// Install expat files in cmake install target
EXPAT_ENABLE_INSTALL:BOOL=ON
// Use /MT flag (static CRT) when compiling in MSVC
EXPAT_MSVC_STATIC_CRT:BOOL=OFF
// Build fuzzers via ossfuzz for the expat library
EXPAT_OSSFUZZ_BUILD:BOOL=OFF
// Build a shared expat library
EXPAT_SHARED_LIBS:BOOL=ON
// Treat all compiler warnings as errors
EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF
// Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]
EXPAT_WITH_GETRANDOM:STRING=AUTO
// Utilize libbsd (for arc4random_buf)
EXPAT_WITH_LIBBSD:BOOL=OFF
// Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]
EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO