いくつかのソースツリーを見て、時々 "*.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 は変数ファイルです。スクリプトをクリーン変数として保持するため、変数ファイルへの編集アクセス権とスクリプトへの実行アクセス権を持つことはできますが、スクリプトへの編集アクセス権はありません。