我的構建過程使用了大量的第三方實用程序。許多這些實用程序都需要使用ASCII文本文件進行配置。我想從Makefile生成這些短文本文件。我知道的唯一方法是如何使用echo
命令每次寫的文本文件中的一行,然後將輸出重定向這樣的:什麼是從Makefile生成文本文件的好方法?
foo.script: bar.prj
touch [email protected]
echo run >>[email protected]
echo -input bar.prj >>[email protected]
echo -output baz.out >>[email protected]
這有點難看。更糟的是,我從Python程序生成Makefile。所以實際代碼看起來更像這樣:
TEMPLATE="""{target}: {input}
touch [email protected]
echo run >>[email protected]
echo -input {input} >>[email protected]
echo -output {output} >>%@"""
TEMPLATE.format(target='foo.script',input='bar.prj',output='baz.out')
這會變得非常難以閱讀和維護。有誰知道更好的方法?
回答:
不要從Make生成文本。調用以更容易生成文本的語言編寫的腳本。
爲什麼不直接寫一個小python(或任何你更舒服的腳本)腳本來生成這些文本文件,並從你的Makefile中調用它? – Mat 2011-12-30 08:57:37
我認爲這個SO問題的第一個答案會讓你做你想做的事情:http://stackoverflow.com/questions/649246/is-it-possible-to-create-a-multi-line-string-variable- in-a-makefile – 2011-12-30 09:09:38
這些都是很棒的評論。我不喜歡有兩個(或更多)Python文件,第一個生成Makefile,第二個由Makefile調用。也許第一個可以用參數來調用,使它像兩個不同的腳本一樣行事?我會嘗試應用來自http://stackoverflow.com/questions/649246/is-it-possible-to-create-a-multi-line-string-variable-in-a-makefile的答案 – 2011-12-30 18:59:09