Оказывается, ответ был глядя мне прямо в лицо . Моя первая проблема заключалась в том, что первая часть этого ответа:
import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})
использует ОС PATH, чего я явно хотел избежать. Вторая проблема заключалась в том, что я полностью упустил из виду ответ ниже, который был точным ответом на мой вопрос:
Чтобы гарантировать повторяемость сборки, нужно явно
инициализировать PATH
path= ['/bin', '/usr/bin', '/path/to/other/compiler/bin']
env = Environment(ENV = {'PATH' : path})
Причина, по которой я не осознавал, что это было решение, заключается в том, что я просто неправильно понял, что env['ENV']['PATH']
и os.environ['PATH']
полностью отделены и различны. В то время как os.environ['PATH']
, очевидно, является внешним ОС PATH, env['ENV']['PATH']
представляется внутренним эквивалентом SCons . Вы можете установить то, что вам нравится.
В конце концов, точное решение, которое я выбрал, и наиболее читаемое для меня, было:
PATH = {'PATH' : ['C:/cygwin/bin']}
env = Environment(ENV = PATH)
env['ENV'] = PATH
env['CXX'] = 'g++'
env.Program('helloworld.c++')