scons 2.4.1から2.5.1に更新され、突然いくつかのエラーが発生する: scons:***見つかった依存サイクル: 内部エラー:ノードのサイクルが見つかりませんでした。Scons Cyclic Dependency
私の問題は、SCMがソースファイルの編集を検出した場合に自動的に更新を試みるバージョンファイルに関するものと考えられます。このプロセスの要点は、#defineを持つファイル 'version.cfg'を維持することです。このファイルはSCMにチェックインされています。ファイルがすでに一度更新されている場合、ファイルがSCMにコミットされるまで、ファイルはもう一度更新されません。このファイルは、 'kb_version.hh'という名前のC++ヘッダーファイルを自動生成するために使用されます。
循環依存関係とは何ですか、どうすれば除外できますか? 。(問題は(私たちは新バージョン2.5.1を使用する場合にのみ、それは循環依存を検出しない)sconsの2.4.1で問題が発生していなかった、あるものは何でもノート、
関連sconsのは、スニペットは以下の通りです:
SRCDIR = '../../src'
SRCS = [
'kb.cc',
]
SOURCE = [ os.path.join(SRCDIR, s) for s in SRCS ]
SCRIPT_VERSION_GEN = os.path.join(env['_ROOT'], 'kb/build/scripts/versionGen.sh')
SCRIPT_VERSION_UPD = os.path.join(env['_ROOT'], 'kb/build/scripts/versionUpdate.sh')
FILE_VERSION_CFG = 'version.cfg'
FILE_VERSION_HH = 'kb_version.hh'
scriptVerGen = env.File(SCRIPT_VERSION_GEN)
scriptVerUpd = env.File(SCRIPT_VERSION_UPD)
verCfg = env.File(os.path.join(SRCDIR, FILE_VERSION_CFG))
verHH = env.File(os.path.join(SRCDIR, FILE_VERSION_HH))
## this command detects for change in source files, then updates, when necessary, the source version.cfg
env.Command(
target = verCfg,
source = [ SOURCE, scriptVerUpd ],
action = [ scriptVerUpd.path + ' ' + env['BS_DIR_SRCROOT'] + '/kb/foo' + verCfg.srcnode().path, Copy(verCfg.path, verCfg.srcnode().path) ]
)
env.Command(
target = verHH,
source = [ verCfg, scriptVerGen ],
action = scriptVerGen.path + ' ' + verHH.path + ' ' + verCfg.path
)
バージョン2.5には、「、あなたの依存関係の走査機構を強化し、新しい依存関係が見つかる可能性があることに注意してください。循環依存性は、SConsにおける論理の強化から新たに見出された依存性によって見出されるようである。 – bdbaddog