Py 3.7 64, Win 10 64 SCons 3.1.1 (but same as master in this case) While cleaning up some old scripts, I uncovered a bug that I've been working around for who knows how long and finally isolated it.
Problem: When MSVC_BATCH is enabled globally, files with different target name are built individually, but ignoring the specified $TARGET name. Here's a little example, note the first argument to the "cl" output. Input: env = Environment(MSVC_BATCH=True) bug32 = env.Object(target='file32', source='file.cpp') Output: cl /FoWIN32\src\\ /c WIN32\src\file.cpp If you explicitly suppress batching in the Object, then it works fine. Input: obj32 = env.Object(target='file32', source='file.cpp', MSVC_BATCH=False) Output: cl /FoWIN32\src\file32.obj /c WIN32\src\file.cpp I chased this to the logic in Tool.msvc, the function msvc_output_flag where it's checking the state of the MSVC_BATCH variable, and ignores the difference in base name that the function just above (msvc_batch_key) performs, see lines 168-173. My hack, which seems to work, is to change line 191 in msvc.py from: 191: if 'MSVC_BATCH' not in env or env.subst('$MSVC_BATCH') in ('0', ' False', '', None): to use the already-working logic in the batch key function like this: 191: if msvc_batch_key(None, env, target, source) is None: I tried it on single file and multi-file compilations, and from my cursory playing around, this keeps the batched files together and separates out those with different target base names, but then I didn't try all cases or check any other downstream code in the pipeline to see if this would break anything there...
_______________________________________________ Scons-dev mailing list Scons-dev@scons.org https://pairlist2.pair.net/mailman/listinfo/scons-dev