いくつかのソースツリーを見て、時々 "*.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ファイルなどのビルドスクリプトでよく使用されます。