Компиляция проекта под разные версии., Как упростить? |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
Компиляция проекта под разные версии., Как упростить? |
27/11/2013, 12:58
Сообщение
#1
|
|
пишу на С++ за еду Группа: Пользователи Сообщений: 7 292 Регистрация: 08/12/2003 Из: компилятора Пользователь №: 3 739 |
Скачал VS2013
Работать в нём одно удовольствие. Так вот, как теперь, малыми средствами компилить проект из 2013студии и для младших неюникод версий макса? Надоело менять сто500 раз в разных студиях в разных проектах кучи строк кода... Вот давайте, например, разберем 2 версии - проект для Max2013, и нужно его же скомпилить для Max2012. Что я пытался делать: 1. Меняю платформу на 90 2. Создаю новую конфигурацию и в ней все пути к либам и хедерам от своей SDK ... тут тупик, т.к. уже при парсинге новых либ и инклюдов в проекте куча подчеркиваний, т.к. не юникод.... Как заставить компилить без переписывания кода? Сообщение отредактировал ECXIMER - 27/11/2013, 13:55 |
|
|
27/11/2013, 15:44
Сообщение
#2
|
|
Избранный :) Группа: Участник Сообщений: 5 052 Регистрация: 20/01/2004 Из: Химки м/о Пользователь №: 4 253 |
У меня сделаны одинаковые проекты от 9-го макса до 2014, отличия только к путям SDK и настройка на юникод для версий после 2012. Потом запускаются через бач.
Так же у меня сделано много всяких ухищрений на автоматизацю всех этих конвертов, все сразу и не припомнить... К тому-же еще зависит как и что ты используешь, я часто использую STL стринги, и мои плагины работают с внешними библиотеками. Так же стоит по возможности использовать максовские строки всякие MCHAR TSTR и т.д они сразу "задефайнены" на юникод. Один из вариантов (не самый лучший для использования в функциях, классах и т.д но часто достаточно эффективный ))) #ifdef _UNICODE // some code #else // some code #endif можно делать перегруженные функции и функции пустышки например #ifdef _UNICODE inline TSTR toTSTR(TSTR str) {return str;} #else inline TSTR toTSTR(CStr str) {return str.data();} #endif Это псевдокод, идея проста, если текущий проект под юникод то функция toTSTR принимает TSTR , если не юникод то CStr , но отдает всегда TSTR Что касается твоего примера, лучше сразу на проблеме спрашивай... Например я не помню где точно, но есть функция которая до версии 2013 макса возвращала указатель, а в версиях начиная с 2013 возвращает ссылку, то там нужно через #ifdef _UNICODE Сообщение отредактировал Pancir - 27/11/2013, 15:45 |
|
|
27/11/2013, 16:31
Сообщение
#3
|
|
пишу на С++ за еду Группа: Пользователи Сообщений: 7 292 Регистрация: 08/12/2003 Из: компилятора Пользователь №: 3 739 |
спасибо, я подозревал, что через ifdef и делается, но тлела надежда, что это может где в каких пропертях указать и готово
То есть у тебя один проект(солюшн) и в нем уже ты кодишь сразу для конвертации в неюникод, далее в проекте куча конфигов для разных версий и компилится бачем? я правильно понял. то есть мне нужно просто все свои стринги описать макросами... а в будущем вообще отказываться от максов до 2012 версии, включительно... |
|
|
27/11/2013, 17:03
Сообщение
#4
|
|
Избранный :) Группа: Участник Сообщений: 5 052 Регистрация: 20/01/2004 Из: Химки м/о Пользователь №: 4 253 |
Ничего не понял про солюшены и проекты...))
Если кратко и в лоб (про VS), то есть проект с настройками компиляций (может быть сразу несколько настроек, debug, release, release_max_2009 ит.д ты сам все это настраиваешь) и есть солюшен, солюшен может содержать в себе несколько проектов. Про солюшен в текущем разговоре забываем сразу... нас интересует только проект .vcxproj. Так вот проект у меня содержит настройки для компиляций от 9 до 2014 максов.... Делал просто, настраивал для 9-го макса все как надо, остальные проекты были копией настроек от 9-го, затем менял пути к sdk, имя выходного файла и настройку юникода. Что касается кодинга, то да, я пишу сразу код с учетом того, что он должен работать как с ascii так и с wide, а иначе как? или я не понял вопроса? QUOTE то есть мне нужно просто все свои стринги описать макросами... И не только стринги ).Только там где это действительно необходимо, и желательно придумать универсальное решение, а не тупо в каждом месте "макросить". QUOTE а в будущем вообще отказываться от максов до 2012 версии, включительно... Хозяин барин )) Сообщение отредактировал Pancir - 27/11/2013, 17:05 |
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 24/04/2024 - 14:26 |