[解決済み] GNU make はスペースを含むファイル名を扱えますか?
質問
いくつかのファイルを含むディレクトリがありますが、そのうちのいくつかは名前にスペースが含まれています。
Test workspace/
Another directory/
file1.ext
file2.ext
demo 2012-03-23.odp
私は、GNUの
$(wildcard)
コマンドを実行し、その結果に対して
$(foreach)
を使って結果を繰り返し、すべてを出力します。以下はそのコードです。
FOO := $(wildcard *)
$(info FOO = $(FOO))
$(foreach PLACE,$(FOO),$(info PLACE = $(PLACE)))
プリントアウトされるのはこんな感じです。
Test workspace
Another directory
file1.ext
file2.ext
demo 2012-03-23.odp
実際に取得するのはこんな感じです。
Test
workspace
Another
directory
file1.ext
file2.ext
demo
2012-03-23.odp
後者は明らかに使い物にならない。その
ドキュメント
のための
$(wildcard)
は、それが "スペースで区切られた名前のリスト" を返すときっぱりと述べていますが、これが引き起こす大きな問題を完全に認めていません。また
ドキュメント
についても
$(foreach)
.
これを回避することは可能でしょうか?もし可能なら、どのように?すべてのファイルとディレクトリの名前を変更してスペースを削除することは、オプションではありません。
どのように解決するのですか。
バグ #712 は、make がスペースを含む名前を扱わないことを示唆しています。どこにも、決して。
を見つけたのですが
ブログの記事で、部分的に実装されているという
でスペースをエスケープすることで
\
(
\\
はタイポかフォーマットのアーティファクトのようです)、しかし。
-
以外の関数では動作しません。
$(wildcard)
. -
変数から名前のリストを展開するときは動作しません。これは特殊変数
$?
,$^
と$+
といったユーザー定義の変数と同じように。ということは$(wildcard)
は正しいファイルにマッチしますが、いずれにせよ結果を解釈することはできません。
したがって、明示的または非常に単純なパターン ルールでは動作させることができますが、それ以上では運が悪いとしか言えません。スペースをサポートする他のビルド システムを探す必要があります。私は ジャム / bjam が行います。 scons , ウエハ , 蟻 , ナント と msbuild はすべて動作するはずです。
関連
-
[解決済み] xargsがスペースを含むファイル名を扱えるようにする
-
[解決済み] GNU MakeのCPPFLAGSとCXXFLAGSの違いについて
-
[解決済み] dockerのエントリーポイントスクリプトに対して、set -eとexec "$@"は何をするのですか?
-
[解決済み] サーバー上のjava jarファイルをバックグラウンドプロセスとして実行する
-
[解決済み] シェルパイプでエラーコードをキャッチする
-
[解決済み] GNU makeで再帰的ワイルドカード?
-
[解決済み] テキストファイルの各行の文字数を表示する方法
-
[解決済み] シェルコマンドの実行時間を表示する
-
[解決済み] export'コマンドは何をするコマンドですか?
-
[解決済み] URLが存在するかどうかをシェルとcurlで確認する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ある処理の戻り値を否定するには?
-
[解決済み] dockerのエントリーポイントスクリプトに対して、set -eとexec "$@"は何をするのですか?
-
[解決済み] フィッシュシェルで環境変数を設定する方法
-
[解決済み] grep --includeオプションを複数のファイルタイプに使用するにはどうすればよいですか?
-
[解決済み] あるシェルスクリプトの関数を別のシェルスクリプトから呼び出すことはできますか?
-
[解決済み] awk を使って特定の数字以降のすべての列を表示するには?
-
[解決済み] 魚の設定ファイルをbashのように動的に再読み込みするには?
-
[解決済み] Makefile でスクリプトをソースにするには?
-
[解決済み] URLが存在するかどうかをシェルとcurlで確認する方法は?
-
[解決済み] makefileのエスケープ