Visual Studio .sln/.vcproj generator?
lexa - 21/Июл/2011 13:10
По многочисленным просьбам трудящихся, я поставляю вместе с LibRaw еще и .sln/.vcproj файлы для MS Visual Studio.
Генерирую я их с помощью Qmake и все более-менее работает, но:
- Иногда (когда Юпитер в Рыбах?) в sln-файле вместо относительных путей оказываются полные, приходится ручками чистить.
- Проекты содержат AdditionalIncludeDirectories указывающие (абсолютным путем) на mkspecs от моего Qmake.
- Можно сгенерировать проект для 32-бит, вроде бы можно (хотя не пробовал) для 64 бит, а вот под две платформы сразу - не умеет.
- Была еще проблема с зависимостями (exe - dll), ибо зависимости ловятся искуственным интеллектом, но вроде я научился добиваться от него счастья.
- Достали win32:/unix: конструкции в .pro-файлах, блин.
Попробовал CMake и счастья еще меньше, проекты ALL_BUILD и ZERO_CHECK раздражают мое эстетическое чувство. При этом проблема абсолютных путей не решена, а дальше я копать не стал и CMake снес.
Что я упустил? Какой еще есть варез, который нагенерирует мне sln/vcproj из простых текстовых файлов?
Comments
Других нет, cmake рулез, но со слезами конечно. Его надо тща
Других нет, cmake рулез, но со слезами конечно. Его надо тщательно готовить и внимательно читать доку. Софтвер написан с точки зрения дизайна и архитектуры чудовищно, там _всё_ ad hoc. Доки не хватает, приходится читать сорсы и тут-то и накрывает.
А там можно не читая сорцов собственно решить задачу: нагене
А там можно не читая сорцов собственно решить задачу: нагенерировать проектных файлов, чистых как слеза ребенка?
Я в том смысле спрашиваю, что "для себя" - насрать и на лишние проекты и на то, что оно там нагадит в CMakeFiles/, а вот включать это безобразие в поставку вареза как-то неудобно перед публикой
Абсолютные пути я почти везде там победил, они остались либо
Абсолютные пути я почти везде там победил, они остались либо там где я их ожидаю, либо в безопасных местах, типа текстовых строк. Но не везде, все равно.
То есть ответ "нет". Возможно получится допилить и до полного совершенства, я просто не ставил такой задачи. А чем не вариант класть CMakeFiles.txt и желающим MSVC/XCode/Eclipse рекомендовать поставить CMake?
Да все вариант. Но я минимизирую время на саппорт. Те люди,
Да все вариант.
Но я минимизирую время на саппорт. Те люди, которым нужен .vcproj, но они не могут сделать его самостоятельно из пяти исходников и одного дефайна, боюсь что и от Cmake тоже могут испортиться.
Ну тогда CMake не вариант и вообще ничего не вариант, кроме
Ну тогда CMake не вариант и вообще ничего не вариант, кроме своего какого-нибудь самопильного генератора.
Я еще делал такое - брал тщательно вылизанную выдачу CMake и долизывал ее перлом, это ж XML. Но потом все же предпочел закопать стюардессу и жениться на живой женщине.
Заниматься ЭТИМ в нашем с тобой возрасте уже, имхо, неприлично.
Единственная серьезная претензия к Qmake - это отсутствие 32
Единственная серьезная претензия к Qmake - это отсутствие 32/64bit в одном флаконе.
Но стандартный путь "New configuration -> x64 -> based on Win32" решает проблему тех, кому нужно 64 бита. А кому нужно оба сразу - исчезающе мало.
> А кому нужно оба сразу - исчезающе мало. И такие, как пра
> А кому нужно оба сразу - исчезающе мало.
И такие, как правило, вполне способны сами скачать Qt и сгенерить проекты как и нужно ;)
Но я минимизирую время на
Но я минимизирую время на саппорт.
Ну так у вас будет только CMakeLists.txt вместо отдельных мэйкфайлов и готовых проектов для студии - всё чисто и аккуратно. + в перспективе CPack (ну и CTest,CDash, но это мелочи).
Те люди, которым нужен .vcproj, но они не могут сделать его самостоятельно из пяти исходников и одного дефайна, боюсь что и от Cmake тоже могут испортиться.
А зачем таким людям вообще тогда .vcproj, если не могут в cmake-gui сделать пару кликов?
Если люди без готового .vcproj вообще ничего не могут сделать - слепите отдельный vs проект, который при сборке/запуске выдаёт инструкцию как же использовать cmake-gui.
Э, ну в cmake-gui и я не могу
Э, ну в cmake-gui и я не могу сделать пару кликов - посмотрел, ничего не понял, закрыл....
1. "Browse source" - это та
1. "Browse source" - это та папка где лежит CMakeLists.txt
2. "Browse Build" - папка в которой будут лежать сгененрированные файлы проекта и билдится бинарники(можно директорию для бинарников менять)
3. Configure жать до тех пор, пока не станет активной "Generate"
4. Generate
Да-да. Интуитивно понятный
Да-да. Интуитивно понятный интерфейс, понимаю.
А зачем оно вообще?
Что зачем? Зачем CMake? Или
Что зачем? Зачем CMake? Или cmake-gui?
я конечно видел что cmake
я конечно видел что cmake всюду суёт абсолютные пути - но мне это как-то фиолетово, ведь подразумевается что cmake будет запускаться у каждого разработчика для генерации файлов..
Есть небольшой workaround для абсолютных путей - сделайте простой .cmd/.bat файл в папке с проектом с содержанием: "subst T: ."
и генерируйте файлы проекта уже относительно T: ... пользователям остаётся только запустить этот скрипт и открывать файлы проекта.
Да, родной способ
Да, родной способ использования Сmake он, наверное, хороший.
А как генератор .vcproj - мне не понравилось после трех минут использования, дальше копать не стал.
В тему: http://arkanoid.livejournal.com/343627.html
В тему: http://arkanoid.livejournal.com/343627.html
У меня сложная сборка, с кучей компонент и достаточным колич
У меня сложная сборка, с кучей компонент и достаточным количеством зависимостей, но такого ада нет. Аркеной либо а) хочет просто поныть какой он умный, а все тупые либо б) не умеет готовить. Либо all of the above.
Ну так описанный адъ взялся оттого, что в evolution28 и gnut
Ну так описанный адъ взялся оттого, что в evolution28 и gnutls2 не следовали правилам покладания файлов .pc
И, как следует из комментариев, авторы сами себе устроили такую жизнь. Может им так легче.
Глупый вопрос
а зачем "ви'жувал студию", если есть QT ?
Re: Глупый вопрос
Так написано же: "по многочисленным просьбам трудящихся".
Re: Глупый вопрос
Это я заметил и прочёл.
Но, грешным делом, подумал, что тут могут быть какие-то рациональные обоснования (типа, "оно и у девелоперов собирается так и только так" или "генерится лучший код и это критично").
для прочих же...
Если кто хочет "пощупать" либу для своих задач - вполне хватит бинарников и исходников (в кач-ве доки)
Если кто хочет поковырять саму либу, то пусть уже в "кьюте" и ковыряет (своеобразный "порог вхождения" дабы отсеять "праздных зевак").
но хозяин - барин, разумеется :-)
Re: Глупый вопрос
Проблема именно с "пощупать" - в винде дохрена версий рантаймов (от разных VC, с разными вариантами multi-single thread/static-dynamic/debug-release).
Давать все варианты .DLL, как это делает Boost(pro), по 8 версий на каждую версию VC - это я удавлюсь собирать. Пусть лучше сами.
Так может ручками один раз на релиз? Или там столько изменен
Так может ручками один раз на релиз? Или там столько изменений в каждом релизе, что никак?
Хоть это и не надо делать каждый раз "на релиз", но даже сде
Хоть это и не надо делать каждый раз "на релиз", но даже сделать один раз аккуратно - это чудовищный геморой, мышью обвозиться.
При том, что wizard тамошний делает по отдельному каталогу на проект, что красоты не добавляет.
Это из опыта пары больших прожектов (пара-тройка млн строк).
Это из опыта пары больших прожектов (пара-тройка млн строк). Именно так и поступили.
Хочу уточнения: это все, в результате, публичное или для вну
Хочу уточнения: это все, в результате, публичное или для внутреннего употребления?
Для внутреннего - мы тоже так делаем. Но девелоперское окружение известно какое и если что, можно моск вправить разработчику на место.
Для публики у меня задача: минимизация возникающих вопросов от совершенно диких персонажей.
Внутреннее, но как бы сказать. Для сотни человек, должно был
Внутреннее, но как бы сказать. Для сотни человек, должно было быть "легко распространяемо", а не так, чтобы один подкрутил, второй подкрутил, т.п. Чекаут, открыл, сбилдил.
> Для публики у меня задача: минимизация возникающих вопросо
> Для публики у меня задача: минимизация возникающих вопросов от совершенно диких персонажей.
IMHO, mission impossible
Для публики у меня задача:
Для публики у меня задача: минимизация возникающих вопросов от совершенно диких персонажей.
Ну вот мы как для внутренней сборки вареза используем CMake, так и для примеров как работать с ним (т.е. то что видят заказчики) - и никто не жжужит. В help'е у нас есть 6 страниц с подробными скриншотами, как использовать cmake-gui.