[解決済み] GNU make で、複数の拡張子を持つリストの各ファイルの拡張子を変更するには?
質問
GNU makefile において、ファイルリストの入力で、新しい拡張子を持つファイルリストを出力することが可能かどうか疑問に思っています。
入力で、私はこのリストを得ます。
FILES_IN=file1.doc file2.xls
で、この変数をmakefileでビルドしたい。 ファイル_IN という変数があります。
FILES_OUT=file1.docx file2.xlsx
それは可能ですか?どのように?
ファイルリストを解析し、各拡張子(.doc, .xls)を検出し、正しい拡張子に置き換える必要があるため、かなり困難です。
どのように解決するのですか?
空白で区切られたファイル名のリストで拡張子を置換することは一般的な要件であり、このための機能が組み込まれています。もしあなたが
x
をリスト内のすべての名前の末尾に追加します。
FILES_OUT = $(FILES_IN:=x)
一般的な形式は
$(VARIABLE:OLD_SUFFIX=NEW_SUFFIX)
. の値をとります。
VARIABLE
の値を取り、代わりに
OLD_SUFFIX
で終わる各単語の末尾を
NEW_SUFFIX
を追加します (マッチしない単語は変更されません)。GNU make はこの機能を (どの make の実装にも存在する)
置換リファレンス
.
を変更したいだけなら
.doc
を
.docx
と
.xls
を
.xlsx
に変換するためには、中間変数を使用する必要があります。
FILES_OUT_1 = $(FILES_IN:.doc=.docx)
FILES_OUT = $(FILES_OUT_1:.xls=.xlsx)
より一般的な構文である
$(VARIABLE:OLD_PREFIX%OLD_SUFFIX=NEW_PREFIX%NEW_SUFFIX)
. この機能はGNU makeに特有のものではありませんが、接尾辞を変更するプレーンな置換ほどには移植性がありません。
また、GNU makeの機能で、同じ行に複数の置換を連鎖させることができるものがあります: それは
patsubst
機能
.
FILES_OUT = $(patsubst %.xls,%.xlsx,$(patsubst %.doc,%.docx,$(FILES_IN)))
関連
-
[解決済み】CMakeをGNU Makeと一緒に使う:正確なコマンドを見るにはどうすればいい?
-
[解決済み】makefileでターゲットのリストを取得する方法とは?
-
[解決済み] Makefile からプログラムが存在するかどうかをチェックする
-
[解決済み] makefilesに複数行のコメントを追加する方法
-
[解決済み] タブ文字がない有効なMakefileは作れますか?
-
[解決済み] makeファイルによるディレクトリの作成
-
[解決済み] mkdir を使っているときに makefile で "directory already exists error" を防ぐには?
-
[解決済み] メイクファイル ifeq 論理的または
-
[解決済み] GNU makeのゴール/ターゲットのうち、定義に変数を含むものをリストアップする
-
[解決済み] GNU make: ジョブの数はシステムの CPU コアの数と同じであるべきか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Makefile からプログラムが存在するかどうかをチェックする
-
[解決済み] makefilesに複数行のコメントを追加する方法
-
[解決済み] タブ文字がない有効なMakefileは作れますか?
-
[解決済み] makeファイルによるディレクトリの作成
-
[解決済み] 1つのソースファイルからいくつかのターゲットを生成するGNU Makefileルール
-
[解決済み] mkdir を使っているときに makefile で "directory already exists error" を防ぐには?
-
[解決済み] メイクファイル ifeq 論理的または
-
[解決済み] GNU makeで再帰的ワイルドカード?
-
[解決済み] GNU makeのゴール/ターゲットのうち、定義に変数を含むものをリストアップする
-
[解決済み] GNU make: ジョブの数はシステムの CPU コアの数と同じであるべきか?