Вопрос или проблема
ВСЕМ,
В моем решении есть один бинарный проект и 15 проектов DLL.
В каждом проекте DLL я устанавливаю свойство OutputFile компоновщика, чтобы разместить DLL в директории, где создается бинарный файл, чтобы не делать это вручную.
Однако это изменение вызывает упомянутое выше предупреждение.
Теперь кажется, что подавляющее большинство решений по поводу предупреждения сводится к изменению “Свойства -> Компоновщик -> Общие -> OutputFile”.
Однако, можно ли изменить TargetPath
? В чем будет разница?
Это приемлемое решение?
Заранее спасибо!!!
Работа с MSVC 2017
Ответ или решение
Вопрос о различиях между свойством OutputFile компоновщика (Linker Output File) и TargetPath в среде разработки MSVC 2017 является важным для управления конфигурацией проектов в вашей среде. Постараемся разъяснить эти понятия и их влияние на ваши проекты.
Что такое OutputFile и TargetPath?
-
OutputFile – это свойство компоновщика, которое определяет, где будет создан результирующий файл (например, DLL) после компиляции проекта. Вы можете указать конкретное имя файла и путь, по которому он будет сохранен. Это позволяет вам организовать выходные файлы таким образом, чтобы они находились в удобном для вас местоположении, например, в одной директории для всех ваших библиотек.
-
TargetPath – это свойство, которое указывает на путь, где конечный выходной файл проекта (далее называемый целевым файлом) будет размещен. Это свойство также может использоваться для получения пути, который используется для ссылки на завершенный проект.
Какое влияние это имеет на ваш проект?
Изменение OutputFile может вызвать предупреждения или ошибки, если компоновщик изначально не настроен для использования этого файла. Это может быть связано с тем, что система ожидала увидеть выходной файл в стандартном месте, а вы указали его в другом. Ваша текущая ситуация с 15 DLL-проектами и одним бинарным проектом может усложнить сборку, если все выходные файлы находятся в одном каталоге и не совпадают с ожиданиями компоновщика.
С другой стороны, изменение TargetPath не всегда вызывает предупреждения, поскольку оно больше связано с определением местоположения целей сборки, а не с конфигурацией компоновки. Однако, если вы измените TargetPath таким образом, что он будет указывать на другое место, это может вызвать несоответствие между местом, где компиляция ожидает найти выходные файлы, и местом, где они фактически находятся.
Как лучше всего действовать в вашем случае?
Оба свойства важны для корректной работы и сборки ваших проектов. Рекомендуется:
-
Использовать OutputFile для расширенной конфигурации выходных файлов: Если вы хотите, чтобы каждый DLL файл находился в одном каталоге, настройте это через OutputFile с соответствующей директории.
-
Оставить TargetPath неизменным, если вы не уверены в последствиях: Изменение этого параметра может быть допустимо, но требует хорошего понимания структуры вашего проекта. Всегда есть риск возникновения конфликтов в случаях, когда разные проекты ожидают одни и те же выходные файлы в одной локации.
Заключение
Изменение свойства OutputFile нацелено на управление выводом компоновщика и может быть предпочтительным методом для решения ваших проблем с предупреждениями. Если вас беспокоит изменение TargetPath, вы можете продолжать использовать существующие настройки, чтобы избежать дополнительных проблем с остальными проектами.
Таким образом, настройка ваших свойств компоновщика должна быть выполнена с учетом всей структуры проекта и зависимостей между разными проектами в решении. Правильный выбор может значительно упростить процесс сборки и улучшить организованность проекта.