이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 명령 h2xs입니다.
프로그램:
이름
h2xs - .h C 헤더 파일을 Perl 확장자로 변환
개요
h2x초 [옵션 ...] [헤더파일 ... [extra_libraries]]
h2x초 -h|-?|--도움
기술
h2x초 C 헤더 파일에서 Perl 확장을 빌드합니다. 확장에는 기능이 포함됩니다.
C 헤더에 있던 #define 문의 값을 검색하는 데 사용할 수 있습니다.
파일.
XNUMXD덴탈의 모듈 _ 이름 확장자의 이름으로 사용됩니다. module_name이 아닌 경우
제공되면 첫 번째 헤더 파일의 이름이 첫 번째 문자와 함께 사용됩니다.
대문자.
확장에 추가 라이브러리가 필요할 수 있는 경우 여기에 포함해야 합니다. 확장
Makefile.PL은 라이브러리가 실제로 존재하는지 여부와 라이브러리가 어떻게
로드해야합니다. 추가 라이브러리는 -lm -lposix 등의 형식으로 지정해야 합니다.
cc 명령줄에서처럼. 기본적으로 Makefile.PL은
Configure에 의해 결정된 라이브러리 경로. 해당 경로는 인수를 포함하여 증가할 수 있습니다.
형태의 -L/다른/라이브러리/경로 추가 라이브러리 인수에서.
그 이름에도 불구하고, h2x초 뼈대 순수 Perl 모듈을 만드는 데 사용할 수도 있습니다. 참조
-X 옵션을 선택합니다.
옵션
-A, --오토로드 생략
모든 자동 로드 기능을 생략하십시오. 이것은 다음과 같습니다. -c 그러나 또한 제거
.pm 파일의 "use AutoLoader" 문.
-B, --베타 버전
알파/베타 스타일 버전 번호를 사용하세요. 다음을 제외하고 버전 번호가 "0.00_01"이 되도록 합니다.
-v 이 지정됩니다.
-C, --생략-변경
생성 생략 변경 파일을 만들고 POD 템플릿에 HISTORY 섹션을 추가합니다.
-F, --cpp-플래그=추가 플래그
기능에 대한 헤더를 스캔할 때 C 전처리기에 지정할 추가 플래그
선언. 생성된 옵션에 이러한 옵션을 씁니다. 메이크파일.PL 도.
-M, --펑크 마스크=정규병 표현
처리할 기능/매크로를 선택합니다.
-O, --덮어쓰기-확인
기존 확장 디렉토리를 덮어쓸 수 있습니다.
-P, --생략 포드
자동 생성된 스텁 POD 섹션을 생략합니다.
-X, --생략-XS
XS 부분은 생략합니다. 스켈레톤 순수 Perl 모듈을 생성하는 데 사용됩니다. "-c" 및 "-f"는
암시적으로 활성화됩니다.
-a, --gen-접근자
구조체 및 공용체의 각 요소에 대한 접근자 메서드를 생성합니다. 생성된
메소드는 요소 이름을 따서 명명됩니다. 의 현재 값을 반환합니다.
추가 인수 없이 호출된 경우 요소; 요소를
추가 인수와 함께 호출된 경우 제공된 값(및 새 값 반환).
임베디드 구조와 공용체는 완전한 것이 아니라 포인터로 반환됩니다.
구조, 연결 호출을 용이하게 합니다.
이러한 방법은 모두 구조의 Ptr 유형에 적용됩니다. 추가로 두 가지 방법
구조 유형 자체에 대해 구성되며 Ptr 유형을 반환하는 "_to_ptr"
동일한 구조를 가리키고 새 메서드를 구성하고 반환하는 "새" 메서드
구조, XNUMX으로 초기화됩니다.
-b, --compat-버전=버전
지정된 펄 버전과 역호환되는 .pm 파일을 생성합니다.
버전 < 5.6.0의 경우 변경 사항이 있습니다.
- 'our'를 사용하지 않음(대신 'use vars' 사용)
- '경고 사용' 없음
사용 중인 perl 버전보다 높은 호환성 버전 지정
h2xs를 실행해도 효과가 없습니다. 지정되지 않은 h2xs가 기본적으로 다음과 호환되는 경우
h2xs를 실행하는 데 사용하는 perl 버전입니다.
-c, --생략-상수
.xs 파일에서 "constant()"를 생략하고 해당하는 특수화된 "AUTOLOAD"를 생략합니다.
.pm 파일.
-d, --디버깅
디버깅 메시지를 켭니다.
-e, --생략-열거=[정규병 표현]
If 정규병 표현 제공되지 않으면 C에 정의된 모든 상수를 건너뜁니다.
열거. 그렇지 않으면 열거형에 정의된 상수만 건너뜁니다.
이름 일치 정규병 표현.
이후 정규병 표현 선택 사항이므로 이 스위치 뒤에 at이 오는지 확인하십시오.
생략하면 하나 이상의 다른 스위치 정규병 표현 보류 중인 인수가 있습니다.
헤더 파일 이름과 같은. 괜찮습니다.
h2xs -e -n 모듈::Foo foo.h
이것은 괜찮지 않습니다:
h2xs -n 모듈::Foo -e foo.h
후자에서 foo.h는 다음과 같이 취합니다. 정규병 표현.
-f, --힘
헤더를 찾을 수 없는 경우에도 헤더에 대한 확장을 만들 수 있습니다.
표준 포함 디렉토리.
-g, --글로벌
.xs 파일에 정적 데이터를 안전하게 저장하기 위한 코드를 포함합니다. 하지 않는 확장
정적 데이터를 사용하면 이 옵션을 무시할 수 있습니다.
-h, -?, --도움
이 h2xs의 사용법, 도움말 및 버전을 인쇄하고 종료합니다.
-k, --생략-const-func
"const"로 선언된 함수 인수의 경우 생성된 속성에서 const 속성을 생략합니다.
XS 코드.
-m, --gen-tied-var
실험: 헤더 파일에 선언된 각 변수에 대해 perl을 선언합니다.
같은 이름의 변수는 마술처럼 C 변수에 연결됩니다.
-n, --이름=모듈 _ 이름
확장에 사용할 이름을 지정합니다(예: -n RPC::DCE).
-o, --불투명=정규병 표현
정규 표현식과 일치하는 C 유형에 대해 "불투명한" 데이터 유형을 사용하십시오.
이러한 유형은 "typedef"이며 typemap의 유형과 동일합니다. 사용해서는 안 된다
없이 -x.
이것은 정수에 해당하는 "typedef"인 유형이 다음과 같을 수 있기 때문에 유용할 수 있습니다.
OS 관련 핸들을 나타내며 OO 방식으로 이러한 핸들을 사용하고 싶을 수 있습니다.
"$handle->do_something()"에서와 같이. "-o"를 사용합니다. 모든 것을 처리하고 싶다면
불투명한 유형으로 "typedef"된 유형.
일치하는 유형은 흰색으로 칠해집니다(단, 앞에 공백이 없는 쉼표 제외
및 그 사이에 공백이 없는 여러 "*").
-p, --제거-접두사=접두사
Perl 함수 이름에서 제거해야 하는 접두사를 지정합니다. 예:
-p sec_rgy_ XS를 설정합니다. 접두사 키워드 및 함수에서 접두사 제거
"constant()" 메커니즘을 통해 자동 로드됩니다.
-s, --const-subs=서브1, 서브2
다음을 사용하여 자동 로드하는 대신 지정된 매크로에 대한 perl 서브루틴을 작성하십시오.
일정한() 서브루틴. 이러한 매크로는 반환 유형이 다음과 같다고 가정합니다. 이륜 전차 *,
예: -s sec_rgy_wildcard_name,sec_rgy_wildcard_sid.
-t, --기본 유형=유형
내부 유형을 지정하십시오. 일정한() 매크로에 대한 메커니즘 사용. 기본값
IV(부호 있는 정수)입니다. 현재 헤더 스캔 중에 발견된 모든 매크로
프로세스에는 이 유형이 있는 것으로 가정합니다. "h2xs"의 향후 버전은
학습된 추측을 할 수 있는 능력.
--use-new-tests
인셀덤 공식 판매점인 --compat-버전 (-b)가 있으면 생성된 테스트는 "Test::More"를 사용합니다.
5.6.2 이전 버전의 기본값인 "테스트" 대신. "테스트::더"는
생성된 "Makefile.PL"의 PREREQ_PM에 추가됩니다.
--오래된 테스트 사용
이전 "테스트" 모듈을 사용하는 테스트 코드를 강제로 생성합니다.
--건너뛰기-내보내기
"내보내기"를 사용하거나 기호를 내보내지 마십시오.
--건너뛰기-ppport
"Devel::PPPort"를 사용하지 마십시오. 이전 버전으로 이식할 수 없습니다.
--skip-자동 로더
"AutoLoader" 모듈을 사용하지 마십시오. 하지만 유지 일정한() 기능 및 "하위
AUTOLOAD"는 상수입니다.
--건너뛰기-엄격
프라그마 "strict"를 사용하지 마십시오.
--skip-경고
프라그마 "경고"를 사용하지 마십시오.
-v, --번역=버전
이 확장의 버전 번호를 지정하십시오. 이 버전 번호는
템플릿. 기본값은 0.01 또는 "-B"가 지정된 경우 0.00_01입니다. 버전
지정된 숫자여야 합니다.
-x, --autogen-xsubs
헤더 파일의 함수 선언을 기반으로 XSUB를 자동으로 생성합니다. NS
"C::Scan" 패키지가 설치되어 있어야 합니다. 이 옵션이 지정되면
헤더 파일은 "NAME1,NAME2"처럼 보일 수 있습니다. 이 경우 대신 NAME1이 사용됩니다.
지정된 문자열이지만 XSUB는 파일에 포함된 선언에 대해서만 방출됩니다.
이름2.
함수에 대한 일부 유형의 인수/반환 값은 다음과 같은 결과를 초래할 수 있습니다.
손으로 편집해야 하는 XSUB 선언/유형 맵 항목. 다음과 같은 객체가 될 수 있습니다.
포인터(예: "long long"), 함수에 대한 포인터, 또는
배열. "의 제한 사항" 섹션도 참조하십시오. -x".
사용 예
# 기본 동작, 확장자는 Rusers입니다.
h2xs rpcsvc/rusers
# 동일하지만 확장자는 RUSERS입니다.
h2xs -n RUSERS rpcsvc/rusers
# 확장자는 rpcsvc::rusers입니다. 여전히 발견
h2xs rpcsvc::rusers
# 확장자는 ONC::RPC입니다. 아직도 발견
h2xs -n ONC::RPC rpcsvc/rusers
# 상수() 또는 AUTOLOAD 없이
h2xs -c rpcsvc/rusers
# RPC라는 확장에 대한 템플릿을 만듭니다.
h2xs -cfn RPC
# 확장자는 ONC::RPC입니다.
h2xs -cfn ONC::RPC
# 확장은 XS 코드가 없는 순수한 Perl 모듈입니다.
h2xs -X 내::모듈
# 확장자는 적어도 Perl5.005_03에서 작동하는 Lib::Foo입니다.
# h2x가 찾을 수 있는 모든 #define 및 열거형에 대해 상수가 생성됩니다.
# foo.h에서
h2xs -b 5.5.3 -n Lib::Foo foo.h
# 확장자는 적어도 Perl5.005_03에서 작동하는 Lib::Foo입니다.
# 상수는 모든 #define에 대해 생성되지만 열거형에 대해서만 생성됩니다.
# 이름이 'bar_'로 시작하지 않는 경우.
h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h
# Makefile.PL은 라이브러리 -lrpc를 찾습니다.
# 추가 디렉토리 /opt/net/lib
h2xs rpcsvc/rusers -L/opt/net/lib -lrpc
# 확장자는 DCE::rgynbase입니다.
# 접두사 "sec_rgy_"는 펄 함수 이름에서 삭제됩니다.
h2xs -n DCE::rgynbase -p sec_rgy_dce/rgynbase
# 확장자는 DCE::rgynbase입니다.
# 접두사 "sec_rgy_"는 펄 함수 이름에서 삭제됩니다.
# sec_rgy_wildcard_name에 대한 서브루틴이 생성되고
# sec_rgy_wildcard_sid
h2xs -n DCE::rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_name,sec_rgy_wildcard_sid dce/rgynbase
# perl.h에 정의 없이 XS를 만들지만 함수 선언은 포함합니다.
# perl.h에서 볼 수 있습니다. 확장 이름은 perl1입니다.
# perl.h를 스캔할 때 정의 -DEXT=extern -DdEXT= -DINIT(x)=
# 문자열이 쉘로 전달되기 때문에 아래에 추가 백슬래시가 있습니다.
# perl 헤더 파일이 있는 디렉토리는
# 경로를 포함하도록 자동으로 추가됩니다.
h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)=" perl.h
# perl.h에서 볼 수 있는 proto.h의 함수 선언과 동일합니다.
h2xs -xAn perl2 perl.h,proto.h
# 동일하지만 /^av_/와 일치하는 기능만 선택
h2xs -M '^av_' -xAn perl2 perl.h,proto.h
# 동일하지만 SV* 등을 "불투명한" 유형으로 취급합니다.
h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h
확장 기반으로 on .h 과 .c 파일
일부 기능을 구현하는 일부 C 파일이 있고 해당하는
헤더 파일. 이 기능에 액세스할 수 있도록 하는 확장 프로그램을 만드는 방법
펄? 아래 예에서는 헤더 파일이 다음과 같다고 가정합니다. 인터페이스_단순.h 과
인터페이스_털이.h, 그리고 perl 모듈의 이름을 "Ext::Ension"으로 지정하려고 합니다. 필요한 경우
일부 전처리기 지시문 및/또는 외부 라이브러리와의 연결은 "-F" 플래그를 참조하십시오.
"옵션"의 "-L" 및 "-l".
디렉토리 이름 찾기
h2xs의 더미 실행으로 시작하십시오.
h2xs -Afn 내선::Ension
이 단계의 유일한 목적은 필요한 디렉토리를 만들고
이 디렉토리의 이름. 출력에서 디렉토리가
확장자는 확대.
C 파일 복사
헤더 파일과 C 파일을 이 디렉토리에 복사하십시오. 확대.
확장 만들기
h2xs를 실행하여 이전 자동 생성 파일을 덮어씁니다.
h2xs -Oxan Ext::Ension 인터페이스_simple.h 인터페이스_hairy.h
h2x는 헤더 파일을 찾습니다. 시간 내에 확장 디렉토리로 변경하면 찾을 수 있습니다.
헤더 파일 확인.
보관 및 테스트
평소처럼 실행
cd 확장/엔션
펄 Makefile.PL
거리를 두다
확인
테스트를 하다
힌트
가능한 한 빨리 "make dist"를 하는 것이 중요합니다. 이렇게 하면 쉽게
병합(1) ".h" 파일을 편집하기로 결정한 경우 자동 생성된 파일에 대한 변경 사항 및
h2xs를 다시 실행하십시오.
생성된 문서를 편집하는 것을 잊지 마십시오. .오후 파일.
자동 생성된 파일을 스켈레톤으로만 고려하면 더 나은 인터페이스를 개발할 수 있습니다.
h2xs가 추측할 수 있는 것보다.
이 섹션을 지침으로만 고려하십시오. h2x의 다른 옵션이 더 적합할 수 있습니다.
너의 요구.
환경
환경 변수가 사용되지 않습니다.
onworks.net 서비스를 사용하여 온라인으로 h2xs 사용