0
私は* .sファイルを入力として、拡張子が出力ファイルとして取り除かれたファイルを作成しようとしています。私は($basename ...)
で即時バインディングを使うことができると思ったが、これはうまくいかなかった。私の最小限の例:Makefile:immedateの割り当てが遅く評価されましたか?
INPUT := *.s
OUTPUT := $(basename $(INPUT))
all:
echo 'input:' $(INPUT)
echo 'output:' $(OUTPUT)
実行し、
echo 'input:' *.s
input: hello.s int3.s
echo 'output:' *
output: Makefile int3 hello hello.o hello.s int3.s
私は:=
が即時評価を強制するだろうと思ったが、実際に遅延結合を行うようだ、とベース名は「.S」のストリップを生産しますから "*"。これにより、ディレクトリ内のすべてのファイルが生成されます。どのように私はこの拡張子を削除した.sファイルを私に与えるだけですか?
INPUT := *.s
で:
INPUT := $(wildcard *.s)
*.s
の最初の原因即時割り当てINPUT
に、あなたは がたくない
だから、 '場合:='「*を評価する」意味するものではありません、どのように '='オペレータから、それは異なっています? – Ant6n
@ Ant6nこんにちは。更新を参照してください。 –