Как использовать одни и те же файлы obj в разных проектах в одном решении - PullRequest
1 голос
/ 09 апреля 2010

У меня есть решение, которое содержит несколько проектов. Некоторые из этих проектов имеют общие исходные файлы. Я настроил свое дерево проектов так, чтобы проекты, которые совместно используют исходные файлы, были вместе. Моя проблема в том, что когда я делаю чистку и сборку, общие исходные файлы перекомпилируются для каждого проекта, а не только для первого, который их использует. В результате первоначальная сборка занимает больше времени, чем нужно, и мне приходится собирать несколько раз, чтобы все зависимости были удовлетворены (необходимы повторные ссылки). Проект представляет собой порт из проекта gcc, который использует серию make файлы для выполнения сборки. Файлы make не повторяют компиляции. Есть ли способ справиться с вышеуказанной ситуацией, чтобы зависимости удовлетворялись в Visual Studio, как и следовало ожидать? Проблема связана с зависимостью между исходным файлом и файлами .idb и .pdb?

Обновление: мне действительно нужен способ заставить VS выполнить повторную ссылку на одни и те же файлы obj с разными именами DLL и LIB. Я могу заставить это работать, включив файлы .obj в проекты повторной ссылки, но не смог понять, как создавать версии отладки / выпуска. В разделах файлов проекта $ (IntDir), похоже, не анализируется. Итак ...

В проекте1

file1.c file2.c file3.c ссылка на dll1.dll, dll1.lib

затем в проекте 2 объектные файлы из проекта1 снова связываются только на этот раз в dll2.dll, dll2.lib

project3 тоже самое. и т.д.

Я также опубликовал это на форуме MS и пока не получил ответа.

1 Ответ

1 голос
/ 09 апреля 2010

Если вы можете реорганизовать код для этого, встроить совместно используемые файлы .obj в проект библиотеки, то вы можете связать эту библиотеку с зависимыми проектами.

Это единственный «чистый» способ, которым я могу придумать, чтобы решить проблему - все, что я могу придумать, может включать «борьбу» или «обман» визуальной студии, что обычно является плохой идеей.

...