2017-05-18 13 views
0

TCLスクリプトで変数セットを読み込んでファイルに出力しようとしていますが、最終的にMake変数に設定しようとしています。MakefileでTCL変数を読む

(私は単にファイルにVARを置くことができます知っているが、それは、より複雑な流れだし、メイクでそれをやってすることは容易になるだろう。ただ、これが可能であるかどうかを知りたい)

Set final_val "Test finished! No Failures" 

私は、スクリプトを呼び出すMakefileの(TCLで設定)final_valの値を使用したい:

@file.tcl 
@echo final_val >> $(out_file) 

PS私はTCLを利用しています。012

答えて

0

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スクリプトを実行する必要があり、その後、メイクがしたいと言うincludeoutputinfo.mkこと:

outputinfo.mk: 
    thescript.tcl > outputinfo.mk 

include outputinfo.mk 

(引数のために、私はスクリプトが putsで標準出力にファイルの内容を書き込むここで想定しています。 )

lはmakeがincludeによって引き起こされるそのような依存関係を知っており、正しいことをしているからです。