Предотвратите круговые зависимости по данным с или однопроходными компоновщиками с одной передачей

Признак: Во время сборки программного обеспечения происходит ошибка сборки; переменные не решают правильно.

Если ваш набор инструментальных средств использует или однопроходного компоновщика с одной передачей, предотвратите круговые зависимости по данным путем добавления StartLibraryGroup и EndLibraryGroup директивы компоновщика к файлу определения набора инструментальных средств. Процесс сборки применяет группирующиеся директивы к библиотекам $(MODELREF_LIBS) модели - ссылки и пользовательские библиотеки $(LIBS).

Например, если компоновщик похож на GNU gcc, затем директивами является '-Wl,--start-group' и '-Wl,--end-group', как показано здесь:

% ------------------------------
% Linker
% ------------------------------

tool = tc.getBuildTool('Linker');

tool.setName(           'GNU Linker');
tool.setCommand(        'gcc');
tool.setPath(           '');

tool.setDirective(      'Library',                           '-l');
tool.setDirective(      'LibrarySearchPath',                 '-L');
tool.setDirective(      'OutputFlag',                        '-o');
tool.setDirective(      'Debug',                             '-g');
tool.addDirective(      'StartLibraryGroup',  '-Wl,--start-group');
tool.addDirective(      'EndLibraryGroup',      '-Wl,--end-group');

tool.setFileExtension(  'Executable',       '');
tool.setFileExtension(  'Shared Library',   '.so');