SCons は、あなたがやりたいことを本当に許可していません。構築する必要がある各ノードには、それに関連付けられたコマンド ライン アクションがあります。コマンド ライン文字列の MD5 チェックサムが保存され、これらのチェックサムが変更されると再構築がトリガーされます。警告フラグを変更すると、結果のオブジェクト ファイルが同じであっても、オブジェクト ファイルを構築するためのコマンド ラインが変更されます。
あなたが本当に決心しているなら、それを回避する方法は常にあります. たとえば、SCons 内で MD5 合計を計算する方法を変更します。概念実証として、再構築を検討するときに SCons が-Wall
フラグを無視するようにしました。これは、SConstruct ファイルの先頭に次のコードを配置して、アクションに関連付けられたコマンド ラインを報告するメソッドを変更することによって行われました。
import SCons
import types
SCons.Action.ActionBase.get_contents_orig = SCons.Action.ActionBase.get_contents
def get_contents(self, *args, **kw):
norebuild = ("-Wall",)
cnt = self.get_contents_orig(*args, **kw).split()
cnt_norebuild = " ".join(i for i in cnt if i not in norebuild)
return cnt_norebuild
SCons.Action.ActionBase.get_contents = types.MethodType(
get_contents, None, SCons.Action.ActionBase)
これは、非常に単純な SConstruct ファイルで機能しました。ただし、これは非常に貧弱なハックであり、おそらく異なるバージョン間またはより複雑なビルドで壊れるでしょう.
結論として、あなたが求めていることを行うことは可能ですが、非常に賢明ではありません。