Подтвердить что ты не робот

Как исправить предупреждение MSB8012 в проекте статической библиотеки в Visual С++ 2010?

Я пытаюсь преобразовать статическую библиотеку из VС++ 2008 в VС++ 2010, и я получаю эти предупреждения о TargetPath и TargetName. Я просмотрел свою конфигурацию и я не уверен, как заставить их уйти. Это серьезно или это действительно просто невежественное предупреждение, для статической библиотеки, которую я обычно собираю один раз и редко перестраиваю.

Я думаю, что это связано с тем, что проект называется itk32, но отладочная версия библиотеки называется itk32d.lib, а старый способ, который он настроил в Visual С++ 6.0, привел к тому, что некоторые вид странных настроек, находящихся в vc2010 проект, который был преобразован некоторое время назад с VC6 на 2008 год, и теперь я перехожу к 2010 году:

1>------ Build started: Project: Itk32, Configuration: Debug Win32 ------
1>...\Microsoft.CppBuild.targets(1151,5): warning MSB8012: TargetPath(C:\...\Libraries\Itk\.\Debug\Itk32d.lib.lib) does not match the Library OutputFile property value (C:\...\Libraries\Itk\Debug\Itk32d.lib). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
1>...\Microsoft.CppBuild.targets(1153,5): warning MSB8012: TargetName(Itk32d.lib) does not match the Library OutputFile property value (Itk32d). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
4b9b3361

Ответ 1

Система сборки была тщательно переработана в VS2010, теперь она использует MSBuild вместо пользовательской системы VCBuild. Такая же система сборки, используемая другими языками, поддерживаемая VS. Они сделали довольно хорошую работу по созданию невидимых старых проектов, которые обычно строят просто отлично. Но есть несколько мест, где вы можете столкнуться с проблемами при импорте старых проектов. Вот что говорит это предупреждение.

Использование компоновщика General + Output File, чтобы указать выходной файл, является одним из таких проблем. На самом деле не уверен, что может пойти не так, возможно, что-то связано с проверкой зависимостей. По умолчанию для него задано значение $(OutDir) $(TargetName) $(TargetExt). Таким образом, лучший способ переименовать выходной файл - изменить значение макроса $(TargetName).

Что доступно на главной общей странице в качестве параметра "Target Name". Он не существовал в более ранних версиях VS. Поэтому измените его на "itk32d". Или лучше, $(ProjectName) d. И reset настройка компоновщика.

Ответ 2

У меня была эта проблема, но я не смог найти правильный ответ здесь в SO, в конце концов я узнал, что она была решена путем исправления промежуточного каталога из.. \Debug "в".. \Debug "и". \Release "на".. \Release "в каждой конфигурации сборки.

Мне жаль, что это стоит только для комментариев, но у меня недостаточно баллов, чтобы добавлять комментарии к сообщениям других людей.

Ответ 3

столкнулись с аналогичной проблемой, но я смог разрешить изменение параметра $(ConfigurationName) с использованием соглашения с предыдущей версией в $(Конфигурация). Я бы не подумал об этом, но когда я проверил, что это так, соглашение об именах изменен, и повторная интрепретация в основном работает и там, но для нескольких вещей она не полностью интерпретируется, и это было причиной.