環境の競合を避けるために、たとえばターゲットプレフィックスを渡すことによって、中間ビルダーへの呼び出しを変更することは可能ですか?
例として、次のように異なるコンパイラ マクロを使用する 2 つの異なるライブラリのソース ファイルを使用するとします。
env.Library('libraryA', 'source.c', CCFLAGS=['-DCONFIG_X'])
env.Library('libraryB', 'source.c', CCFLAGS=['-DCONFIG_Y'])
Library-Builder が Object-Builder を呼び出して、異なる CCFlags を使用して最初にソース ファイルをコンパイルするため、SCons は競合を検出します。
明らかな解決策は、次のように、コンパイルをリンクから分割することです。
objectA = env.Object('objectA', 'source.c', CCFLAGS=['-DCONFIG_X'])
objectB = env.Object('objectB', 'source.c', CCFLAGS=['-DCONFIG_y'])
env.Library('libraryA', objectA)
env.Library('libraryB', objectB)
ソースとして複数のファイルが使用されている場合に特に役立つ、よりエレガントな方法があるかどうか疑問に思っていました。
ありがとう!