2011-07-25 5 views
2

M4を使用してファイルを展開するシステムで作業していますが、特定のケースで拡張に問題があります。定義/(可能であれば、私はむしろ、変更しないと思います)マクロの命名のための規則は__<name>__(すなわち、二重先頭と末尾のアンダースコア)であるので、これは正しく展開されます。make m4は、マクロがマクロと同じ文字で終了するときに表示されます。

define(`__ROOT__', `/home/mydir') 
... 
__ROOT__/bin 

/home/mydir/bin 

を与えるが、 、

define(`__PREFIX__', `App_Mnemonic') 
... 
__PREFIX___some_service 

は与えるべきである:

App_Mnemonic_some_service 

しかし与える

__PREFIX___some_service 

(すなわち

私はマクロの末尾のアンダースコアと基礎となるテキストの有効なアンダースコアの間にスペースがないとm4を混乱させると考えます。私はこれについて何かできることはありますか?環境変数のように、中括弧でマクロを区切ることはできますか?

答えて

1

一見シンプル本当に、私は基本的なテキストにしなければならなかったすべては、これを変更しました。このため

__PREFIX___some_service 

を:

__PREFIX__()_some_service 

それはおそらく、少し不格好に見えますが、それはマクロです結局のところ、マクロ定義を変更する必要はありません。これはそのままです:

define(`__PREFIX__', `App_Mnemonic') 
関連する問題