Мы используем косвенность при определении зависимостей библиотеки, например,Scons LIBS linking, как удалить дубликаты LIBS?
env.Program(TARGET, SOURCE, LIBS = [ $LIBS_A, $LIBS_B, $LIBS_C ])
LIBS_A, LIBS_B и LIBS_C указаны в других файлах SConscript.
Пусть:
LIBS_A/Sconscript has LIBS_A = [ foo, bar, baz ]
LIBS_B/Sconscript has LIBS_B = [ foo, bar, bat ]
LIBS_C/Sconscript has LIBS_C = [ foo, bar, ben ]
Затем конечный линкер линия будет иметь:
-lfoo -lbar -lbaz -lfoo -lbar -lbat -lfoo -lbar -lben
Как мы можем удалить дубликаты и иметь компоновщик линии следующим образом:
-lfoo -lbar -lbaz -lbat -lben
Хмм, если вы хотите, чтобы все эти библиотеки появлялись только один раз, вы должны указать их только один раз для «LIBS». Предоставление lib несколько раз могло бы иметь смысл, когда задействованы круговые зависимости между библиотеками и объектами ... поэтому SCons не сможет решить эту проблему автоматически. – dirkbaechle
Было бы полезно, если образец кода, который вы представляете, фактически запущен .. env.Program не может работать. – bdbaddog