Tclスクリプトで値をmakeに実行させることは自明ではありません。 (メイク側で
#!/usr/bin/env tclsh
set final_val "Test finished! No Failures"
puts $final_val
:Tclの側では
:最も簡単な方法は、あなたがしてかなり単純なアプローチを使用することができるよう、その唯一の出力として、その変数を生成するスクリプトを手配するかもしれません
FINAL_VAL := $(shell thescript.tcl)
はもちろんのちょうどこのより可能多くの複雑さ、ありますが、これはおそらく仕事ができる最も簡単なテクニックです:あなたは)実行ファイルすべてを作ったと仮定。
そのスクリプトで多くの出力を生成している場合は、出力の別の後処理を使用して必要な部分を取得する必要があります。それは本当に複雑になります。これらのケースは、メイクファイルの処理の変数定義段階で重要な処理を実際にしたくないので、中間ファイルを使用して、おそらく再帰的なmakeを使って変換する方が良い場合があります(間違ったときに頭痛を引き起こします。デバッグであなたを苦痛の世界にします)。より複雑なのですが、私のために本当によく働くのTclコードは、私が欲しいのmake変数の定義が含まれているいくつかのファイルは、おそらくoutputinfo.mk
を生成することです
一つの方法。 (Tclの側では、ファイルへの書き込みだけだ。それを行うための方法の負荷があります。)
その後、私はメインのmakefileはあなたoutputinfo.mk
を生成することを言うの依存関係ルールを持たせるだろうTclスクリプトを実行する必要があり、その後、メイクがしたいと言うinclude
outputinfo.mk
こと:
outputinfo.mk:
thescript.tcl > outputinfo.mk
include outputinfo.mk
(引数のために、私はスクリプトが
puts
で標準出力にファイルの内容を書き込むここで想定しています。 )
lはmakeがinclude
によって引き起こされるそのような依存関係を知っており、正しいことをしているからです。