有沒有辦法告訴scons使用特定文件來設置默認環境?我正在使用TI DSP,編譯器與cc不同;我希望有一個「環境文件」來定義編譯器的位置,以及默認標誌是什麼,然後可以將它用於多個項目。scons環境設置
有什麼建議嗎?
有沒有辦法告訴scons使用特定文件來設置默認環境?我正在使用TI DSP,編譯器與cc不同;我希望有一個「環境文件」來定義編譯器的位置,以及默認標誌是什麼,然後可以將它用於多個項目。scons環境設置
有什麼建議嗎?
您可以使用普通的Python實用程序來讀取文件或處理XML,然後將其導入到您的env中。如果你沒有需要導入到SCons的外部文件,那麼你可以簡單地在scons文件中編碼環境。如果出於某種原因,您的環境是在Perl字典中定義的(就像我的情況一樣),您可以嘗試使用PyPerl或將Perl字典轉換爲YAML,然後將YAML讀取到python中。 (我能夠做到後來,但不是前者)。
比方說,你只要有你需要閱讀其中有環境變量的格式的文件:
ENV_VAR1 ENV_VAL1
ENV_VAR2 ENV_VAL2
...
你可以導入到你的SConstruct.py文件此類似:
import os
env_file = open('PATH_TO_ENV_FILE','r')
lines = env.file.readlines()
split_regex = re.compile('^(?P<env_var>[\w_]+) *(?P<env_val>.*)')
for line in lines:
regex_search = split_regex.search(line)
if regex_search:
env_var = regex_search.group('env_var')
env_val = regex_search.group('env_val').strip()
os.environ[env_var] = env_val
base_env = Environment(ENV=os.environ)
# even though the below lines seem redundant, it was necessary in my build
# flow...
for key in os.environ.iterkeys():
base_env[key] = os.environ[key]
如果您想要將這個醜陋內容粘貼到不同的文件中,然後從您的主SConstruct.py文件中導入它,可以添加以下內容以允許從其他文件訪問「環境」類:
from SCons.Environment import *
然後在你的主SConstruct.py文件,導入像ENV文件:
from env_loader import *
SInclusion file:
...
myenv = Environment(...)
...
SConstruct file:
...
execfile('SInclusion')
...
myenv.Object(...)
...
嗯....也許,但它看起來像execfile有一個問題w /版本的Python http :?//scons.tigris.org/ds/viewMessage.do dsForumId = 1268&dsMessageId = 1253990 – 2010-05-17 15:20:47
感謝 - 這可能是小童的東西,但我不知道Python和不想爲了做一件事而浪費了很多時間。 – 2009-09-03 00:14:21
嗯,所有的鬆散結束都沒有被捆綁起來,但它看起來像它讓我在那裏的大部分方式 – 2010-05-17 17:12:54