Как заставить VS сваливать obj файлы в разные директории, в соответствии с либо исходной структурой директориев исходников, либо со структурой фолдеров в проекте. Пока что я не сумел заставить нормально компилировать проекты, в котором есть cpp файлы с одинаковыми именами, но в разных директориях. Компилятор просто валит все в одну кучу, в результате получается лажа. Что за допотопный идиотизм?! 2010 год на дворе!
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, McSeem2, Вы писали:
MS>Как заставить VS сваливать obj файлы в разные директории, в соответствии с либо исходной структурой директориев исходников, либо со структурой фолдеров в проекте.
Никак. Самый правильный вариант — перейти на нормальную систему сборки, а не VS-ное убожество (я предпочитаю CMake).
Второй вариант — вручную прописать имя obj-файла в свойствах cpp-файла.
Sapienti sat!
Re: Одинаковые имена .cpp в Visual Studio 2005/2008
> но в разных директориях. Компилятор просто валит все в одну кучу, в > результате получается лажа. Что за допотопный идиотизм?! 2010 год на дворе!
Странно. По крайней мере MSVS2003 их сваливает в одну кучу, но имена даёт разные, с цифровым постфиксом File.obj, File1.obj и т.п.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Одинаковые имена .cpp в Visual Studio 2005/2008
От:
Аноним
Дата:
04.01.10 20:31
Оценка:
Здравствуйте, McSeem2, Вы писали:
MS>Что за допотопный идиотизм?! 2010 год на дворе!
Извесный баг VS 2005/2008
Не уверен, что он был раньше.
Re[2]: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, Аноним, Вы писали:
А>Извесный баг VS 2005/2008 А>Не уверен, что он был раньше.
А можно подробнее? Конда он проявляется? На простом проекте мне не удалось воспроизвести ситуацию — именует File.obj, File1.obj, etc. Но на сложном однажды возник fail.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[3]: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, Аноним, Вы писали:
А>>Извесный баг VS 2005/2008 А>>Не уверен, что он был раньше.
MS>А можно подробнее? Конда он проявляется? На простом проекте мне не удалось воспроизвести ситуацию — именует File.obj, File1.obj, etc. Но на сложном однажды возник fail.
В проекте случайно результаты конверсии с предыдущих версий не остались? Если на чистом маленьком не повторяется, то надо текстовым редактором ссылки на унаследованные vsprops прибить и будет как новый.
зы вот кто бы мне как такое победить для out of source билда под линукс описал ...
Re[4]: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, SleepyDrago, Вы писали:
SD>В проекте случайно результаты конверсии с предыдущих версий не остались? Если на чистом маленьком не повторяется, то надо текстовым редактором ссылки на унаследованные vsprops прибить и будет как новый.
Нет такого слова. Что такое vsprops?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[5]: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, koandrew, Вы писали:
MS>>>Нет такого слова. Что такое vsprops?
K>>Файлы настроек.
MS>Спасибо. А что это за файлы и где они находятся?
Имелось ввиду не удалить сами файлы — они системные и пусть себе будут.
А удалить на них ссылки из тушки проекта. При апгрейде с предыдущих версий в файлах проекта появляются дополнительные ссылки на *Upgrade.vsprops (точно не помню — их легко узнать если перед этим заглянуть в текст чистого проекта). Они вешаются на каждую конфигурацию если мне не изменяет память — так что удалять все вхождения. Опять же это может быть магия на уровне самой студии — то есть в новом добавляете и оно определяет что такой уже был и нумерует — тогда импорт старых не сработает.
Re[8]: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, SleepyDrago, Вы писали:
SD>А удалить на них ссылки из тушки проекта. При апгрейде с предыдущих версий в файлах проекта появляются дополнительные ссылки на *Upgrade.vsprops (точно не помню — их легко узнать если перед этим заглянуть в текст чистого проекта). Они вешаются на каждую конфигурацию если мне не изменяет память — так что удалять все вхождения. Опять же это может быть магия на уровне самой студии — то есть в новом добавляете и оно определяет что такой уже был и нумерует — тогда импорт старых не сработает.
Не помогает. Я даже пересоздал проект с нуля. Берет тот файл, который был первым добавлен в проект. Более того — удаляем все .obj, явно компилируем один файл, добавленный последним — компилирует тот, который был добавлен первым. Глюкота.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[2]: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, McSeem2, Вы писали:
MS>>Что за допотопный идиотизм?! 2010 год на дворе!
А>Извесный баг VS 2005/2008 А>Не уверен, что он был раньше.
По моим наблюдениям, начал проявляться в VS2008. В VS2005 такого не наблюдалось.
Пришлось даже утилиту написать для подправки файлов проектов, чтобы она повторяла функционал VS2005.
... << RSDN@Home 1.2.0 alpha 4 rev. 1110>>
Re: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, McSeem2, Вы писали:
MS>Как заставить VS сваливать obj файлы в разные директории, в соответствии с либо исходной структурой директориев исходников, либо со структурой фолдеров в проекте. Пока что я не сумел заставить нормально компилировать проекты, в котором есть cpp файлы с одинаковыми именами, но в разных директориях. Компилятор просто валит все в одну кучу, в результате получается лажа. Что за допотопный идиотизм?! 2010 год на дворе!
У каждого .cpp в пропертях можно прописать в какой .obj файл его билдить. Обычно студия сама расписывает им разные имена. но видимо иногда бывает феил.
vcproj — простой xml так что можно его и руками поковырять если что )
Re[2]: Одинаковые имена .cpp в Visual Studio 2005/2008
Здравствуйте, yatagarasu, Вы писали:
Y>У каждого .cpp в пропертях можно прописать в какой .obj файл его билдить. Обычно студия сама расписывает им разные имена. но видимо иногда бывает феил. Y>vcproj — простой xml так что можно его и руками поковырять если что )
Нет уж, проще оказалось все переименовать и дать файлам префиксы, чтобы не дублировались имена. К тому же, мы делаем библиотеку и многие клиенты покупают ее с full source. Так вот, они, как правило строят свои проекты, просто включая наши файлы. Их что, тоже заставлять поковырять?
Проблема решалась бы тривиально, если бы в Intermediate Directory можно было бы указать что-то типа $(ConfigurationName)\$(ParentDir). Я попробовал. Да, действительно, внутри "Release" создаются директории с именами как в Solution Explorer. Но они остаются пустыми, а компилятор все равно валит все в одну кучу. Самое смешное, что линкер потом пытается искать файлы не в этой куче, а в указанных директориях. И соответственно, съедает конфетку обломиську. Так и живем с этой глюкотой.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.