"*.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.pcCMakeLists.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ファイルなどのビルドスクリプトでよく使用されます。

おすすめ記事