"*.in" 확장자를 가진 소스 파일

"*.in" 확장자를 가진 소스 파일

일부 소스 트리를 살펴보면서 가끔 "*.in" 확장자를 가진 파일을 발견합니다. 일반적으로 /etc 또는 /usr/share 아래에 속하는 컴파일되지 않은 파일입니다.

예를 들어,개방형 네트워크 관리자소스 코드, 파일을 볼 수 있습니다:

etc/owsmangencert.sh.in

그 내용은 다음과 같습니다.

/etc/openwsman/owsmangencert.sh

RPM(RHEL7)에서 배포할 때 일부 변수 참조를 저장하세요.

나는 그러한 파일이 빌드 프로세스 중에 사용되어 언급된 경로에서 끝난다고 가정합니다. 그런데 왜 이름 originalname.in이 이렇지 않은 걸까요 originalname? 그러한 파일이 땅에 떨어지기 전에 일반적으로 어떤 일이 발생합니까?

그러한 파일의 이름은 어떻게 지정됩니까? 누구든지 나에게 올바른 파일을 알려줄 수 있습니까?

Openwsman에는 비슷한 상황인 etc/owsmangencert.sh.cmake도 있습니다.

답변1

내가 아는 .in 한 파일을 사용하도록 설계된 프로그램은 없지만 접미사를 사용하면 .in해당 파일이 최종 파일이 아니라는 것을 의미합니다. 대신 .in파일은 이름은 같지만 접미사 없이 파일을 생성하기 위한 일종의 템플릿 또는 입력 역할을 합니다 .in.

openwsman의 경우 source 에서 컴파일할 수 있는 패키지에서 예제 파일을 자주 찾을 수 있습니다 configure.in. 이는 autoconf/automake에 의해 처리되며 이라는 파일을 생성합니다 configure. 이 새 버전은 명령줄에서 실행할 수 있는 실제 쉘 스크립트입니다.

그러면 configure스크립트 자체가 특정 .in파일을 처리할 수 있습니다. 거기에 다음 openwsman.pc.in과 같은 줄이 표시됩니다.

Version: @VERSION@

기호 사이에는 @구성 스크립트에서 사용되는 변수가 있습니다. 생성된 openwsman.pc.in`에서 이 변수의 값이 채워집니다. 예를 들면 다음과 같습니다.

Version: 2.4.5

@(variablename)@CMake 빌드 시스템도 이 구문을 인식합니다. 따라서 CMake를 실행하면 openwsman.pc.in파일 이 openwsman.pc.CMakeLists.txt

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/openwsman.pc.in ${CMAKE_CURRENT_BINARY_DIR}/openwsman.pc)

변환은 동일한 방식으로 수행되지만 etc/owsmangencert.sh.cmake확장에 따라 CMake 빌드 시스템만 이 작업을 수행하고 구성 스크립트는 수행하지 않는다고 가정합니다. 이 경우 파일에서 관련 줄을 찾을 수 있습니다 etc/CMakeLists.txt.

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/owsmangencert.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/owsmangencert.sh)

어쨌든 이를 설명하는 문서는 없지만 CMake의 구성 스크립트 또는 CMakeLists.txt 파일과 같은 빌드 스크립트에서 자주 사용됩니다.

답변2

파일과 템플릿이 있습니다. 내부를 살펴보세요.owsmangencert.sh.in

CERTFILE=@SYSCONFDIR@/servercert.pem
KEYFILE=@SYSCONFDIR@/serverkey.pem
CNFFILE=@SYSCONFDIR@/ssleay.cnf

@SYSCONFDIR@실제 경로를 대체합니다

automake가 구성된 후 config.status가 생성되고 make 프로세스 중에 토큰이 실제 값으로 대체됩니다. 이것은 automake 템플릿입니다. ~을 위한더 깊게지식.

답변3

내가 만난 유일한 *.in 파일은 autoconf 및 automake를 사용하여 .configure 단계를 지정하는 config.in입니다.

이런 의미에서 *.in은 변수 파일입니다. 깨끗한 변수로 스크립트를 유지하므로 변수 파일에 대한 편집 액세스 권한과 스크립트에 대한 실행 액세스 권한을 가질 수 있지만 스크립트에 대한 편집 액세스 권한은 없습니다.

관련 정보