주의
국외 거주자는 인력이 부족 하고 자금도 없습니다. Changes
파일 상단에 세부정보에 대한 도움 요청이 있습니다.
이것은 James Clark이 1997년에 시작한 XML 1.0 제4판 구문 분석을 위한 C99 라이브러리인 Expat입니다. Expat는 스트림 지향 XML 구문 분석기입니다. 이는 구문 분석을 시작하기 전에 파서에 핸들러를 등록한다는 의미입니다. 이러한 핸들러는 파서가 파싱 중인 문서에서 관련 구조를 발견할 때 호출됩니다. 시작 태그는 핸들러를 등록할 수 있는 구조 종류의 예입니다.
Expat은 다음 컴파일러를 지원합니다:
${today} minus 5 years
롤링) Windows 사용자는 사전 컴파일된 라이브러리와 실행 파일, 그리고 개발자를 위한 소스 코드가 모두 포함된 expat-win32bin-*.*.*.{exe,zip}
다운로드를 사용할 수 있습니다.
Expat은 무료 소프트웨어입니다. 이 패키지와 함께 배포된 COPYING
파일에 포함된 라이센스 조건에 따라 이를 복사, 배포 및 수정할 수 있습니다. 이 라이센스는 MIT/X 컨소시엄 라이센스와 동일합니다.
CMake에서 libexpat를 사용하는 세 가지 문서화된 방법이 있습니다.
find_package
이 접근 방식은 CMake의 자체 모듈 FindEXPAT
활용합니다.
다음 예에서 대문자 EXPAT
확인하세요.
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
이 접근 방식에는 다음의 파일이 필요합니다.
다음 예에서 소문자 expat
확인하세요.
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
모듈 아래 설명된 대로 이 접근 방식을 사용하려면 FetchContent
모듈과 SOURCE_SUBDIR
옵션에 대한 지원을 모두 사용하려면 CMake >=3.18이 필요합니다.
다음 사항에 유의하세요.
master
와 함께 FetchContent
모듈을 사용하는 것은 권장되지 않으며 공식적으로 지원되는 것으로 간주되지 않습니다.Git을 통해 libexpat를 가져오는 예는 다음과 같습니다.
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)
Git 저장소의 체크아웃을 통해 Expat을 빌드하는 경우 GNU autoconf 및 libtool 도구를 사용하여 구성 스크립트를 생성하는 스크립트를 실행해야 합니다. 이렇게 하려면 autoconf 2.58 이상이 필요합니다. 다음과 같이 스크립트를 실행하세요.
./buildconf.sh
이 작업이 완료되면 소스 배포판에서 빌드하는 것과 동일한 지침을 따르십시오.
소스 배포판에서 Expat을 빌드하려면 먼저 최상위 배포 디렉터리에서 구성 셸 스크립트를 실행합니다.
./configure
구성을 위해 제공할 수 있는 옵션은 많습니다( --help
옵션과 함께 구성을 실행하여 검색할 수 있음). 그러나 가장 흥미로운 것은 설치 디렉터리를 설정하는 것입니다. 기본적으로 구성 스크립트는 libexpat를 /usr/local/lib
에, expat.h
/usr/local/include
에, xmlwf
/usr/local/bin
에 설치하도록 설정합니다. 예를 들어 /home/me/mystuff/lib
, /home/me/mystuff/include
및 /home/me/mystuff/bin
에 설치하려는 경우 다음을 사용하여 이를 configure
할 수 있습니다.
./configure --prefix=/home/me/mystuff
또 다른 흥미로운 옵션은 행 및 열 번호와 전체 바이트 인덱스에 대해 64비트 정수 지원을 활성화하는 것입니다.
./configure CPPFLAGS=-DXML_LARGE_SIZE
그러나 이러한 수정은 ABI에 대한 획기적인 변경이므로 일반적인 사용(예: Linux 배포판의 일부)에는 권장되지 않으며 특별한 요구 사항이 있는 빌드에는 권장되지 않습니다.
구성 스크립트를 실행한 후 make
명령은 항목을 빌드하고 make install
항목을 적절한 위치에 설치합니다. 추가 make
옵션에 대해 알아보려면 Makefile
을 살펴보세요. 항목이 설치될 디렉터리에 대한 쓰기 권한이 필요합니다.
기본 UTF-8이 아닌 UTF-16 인코딩으로 문서 정보를 제공하기 위해 Expat을 빌드하는 데 관심이 있다면 다음 지침을 따르세요( make distclean
실행한 후). xmlwf는 (아직) 이 컴파일 모드를 지원하지 않으므로 --without-xmlwf
로 구성합니다.
라이브러리 이름으로 libexpatw.la
사용하도록 Makefile.am
파일을 대량 패치합니다.
find . -name Makefile.am -exec sed -e 's,libexpat.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i.bak {} +
Makefile.in
파일을 다시 작성하려면 automake
실행하십시오.
automake
부호 없는 짧은 UTF-16 출력(및 char 형식의 버전/오류 문자열)의 경우 다음을 실행합니다.
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
wchar_t
(버전/오류 문자열 포함)로 UTF-16 출력을 수행하려면 다음을 실행하세요.
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
참고: 후자를 사용하려면 -fshort-wchar
로 컴파일된 libc도 필요합니다.
make
실행합니다(xmlwf 제외).
make install
실행합니다(다시 말하지만 xmlwf는 제외).
DESTDIR
사용이 지원됩니다. 다음과 같이 작동합니다:
make install DESTDIR=/path/to/image
변수 설정 우선순위는 makefile 내 세트 DESTDIR
대체합니다.
참고: 이는 Expat 라이브러리 자체에만 적용되며 UTF-16 버전의 xmlwf를 빌드하고 테스트는 현재 지원되지 않습니다.
구성을 위해 autoconf를 사용하는 프로젝트에서 Expat를 사용할 때 conftools/expat.m4
의 검색 매크로를 사용하여 Expat를 포함하는 방법을 결정할 수 있습니다. 자세한 내용은 해당 파일 상단의 설명을 참조하세요.
이 배포판의 doc/reference.html
파일에 참조 매뉴얼이 있습니다.
CMake 빌드 시스템은 아직 실험적 이며 준비가 되면 GNU Autotools를 기반으로 하는 기본 빌드 시스템을 대체할 수 있습니다.
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