diff --git a/source/blender/compositor/SConscript b/source/blender/compositor/SConscript
index c0388438a98e684709c5310d7f506956f5d8a4c5..8d7f036f172cd9dd140243b425f54f58071f2448 100644
--- a/source/blender/compositor/SConscript
+++ b/source/blender/compositor/SConscript
@@ -28,7 +28,10 @@
 Import ('env')
 defs = ['GLEW_STATIC']
 
-sources = env.Glob('intern/*.cpp') + env.Glob('nodes/*.cpp') + env.Glob('operations/*.cpp')
+# split into 3 modules to work around command length limit on Windows
+sources_intern = env.Glob('intern/*.cpp')
+sources_nodes = env.Glob('nodes/*.cpp')
+sources_operations = env.Glob('operations/*.cpp')
 
 incs = [
     '.',
@@ -56,4 +59,7 @@ incs = [
 if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
     incs.append(env['BF_PTHREADS_INC'])
 
-env.BlenderLib('bf_composite', sources, incs, defines=defs, libtype=['core'], priority=[164])
+env.BlenderLib('bf_composite_intern', sources_intern, incs, defines=defs, libtype=['core'], priority=[164])
+env.BlenderLib('bf_composite_nodes', sources_nodes, incs, defines=defs, libtype=['core'], priority=[165])
+env.BlenderLib('bf_composite_operations', sources_operations, incs, defines=defs, libtype=['core'], priority=[166])
+