Это может быть бесполезно в зависимости от вашей ситуации, но некоторые компоновщики не поддерживают наличие нескольких объектных файлов с одинаковыми именами в разных каталогах. Поэтому, если вы дадите им some_directory / func.o и some_other_directory / func.o, будет связан только один из них. Я знаю, что CodeWarrior делает это.
Чтобы избежать этой проблемы, я проверяю, чтобы все мои объектные файлы имели уникальные имена. Соглашение, которое я использую, должно включать сокращение имени модуля, например, func_module.o. С этим соглашением легко идентифицировать объектный файл. Или, если вам нужно сделать это программно, подойдет любой метод поиска файлов.
Некоторые версии Visual Studio помещают все объектные файлы в один каталог независимо от организации файлов .c и / или .cpp и автоматически добавляют числовые суффиксы во избежание конфликтов. Выяснение, какой объектный файл идет в какой файл .c требует чтения файла проекта.