metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-05-14 01:49 pm

С++

А почему в C++ не принято делать автоматическое управление зависимостями?
Ну вот если в VS есть два проекта - почему прописывать в зависимый проект include и lib для каждой конфигурации сборки приходится руками, и если не использовать auto-linking - еще и имя в список библиотек добавлять приходится.

[identity profile] trueblacker.livejournal.com 2013-05-14 10:54 am (UTC)(link)
вообще-то какое-то управление там есть, хотя я и не пользуюсь
вроде бы по крайней мере с lib как-то работает, механику не помню уже

[identity profile] metaclass.livejournal.com 2013-05-14 11:00 am (UTC)(link)
auto-linking есть - как минимум visual studio поддерживает. У меня так буст линкуется - папку с ним указать надо явно, а вот имена нужных либ линкер достает автоматически.

[identity profile] trueblacker.livejournal.com 2013-05-14 11:02 am (UTC)(link)
если я правильно помню, имя либы определяется через особые #pragma
это никак не связано с зависимостью проектов в солюшене

[identity profile] qehgt.livejournal.com 2013-05-14 11:02 am (UTC)(link)
1. Потому, что это в Стандарт не пропишешь, так как к языку отношение не имеет.
2. Обычно правой кнопкой на проекте - " Project Dependencies" и указываешь от кого он зависит. Линкер библиотеки от зависимых проектов будет цеплять автоматически.

[identity profile] trueblacker.livejournal.com 2013-05-14 11:02 am (UTC)(link)
тут речь конкретно про буст, разумеется

[identity profile] aamonster.livejournal.com 2013-05-14 11:02 am (UTC)(link)
Механика простая - #pragma comment в хедере, в итоге в obj попадает указание линкеру, что надо влинковывать. Но, кажется, в список зависимостей эти либы не попадают, и если либа изменилась - перелинковывать не будет.

[identity profile] trueblacker.livejournal.com 2013-05-14 11:05 am (UTC)(link)
нет, pragma - это другое
я так понимаю речь чисто о солюшене, а не о том, что попадает в сырцы
на уровне солюшена тоже что-то есть по-моему, по крайней мере в части поиска либов в зависимых аутпутах

[identity profile] http://users.livejournal.com/_slw/ 2013-05-14 12:05 pm (UTC)(link)
у вас виндуз головного мозга!

[personal profile] alll 2013-05-14 01:20 pm (UTC)(link)
патамуштааа оне должны хранить девственность обратную совместимость с самой древней версией C, которую помнит самый старый член комитета стандартизации йезыга
а члены там уй какие древние попадаются

[identity profile] zamotivator.livejournal.com 2013-05-14 02:59 pm (UTC)(link)
В CMake принято, не знаю как у вас там в студии
Edited 2013-05-14 14:59 (UTC)

[identity profile] captain-hell.livejournal.com 2013-05-14 04:53 pm (UTC)(link)
инклюды всегда писались в файл, а не проект.
а линковку каждая система сборки видит по-своему и добавляет, соответсвенно. Qmake сам свои добавляет.

[identity profile] mstone.livejournal.com 2013-05-14 07:08 pm (UTC)(link)
Это вопрос не к языку, а к билдовой инфраструктуре. VS в чистом виде плохо подходит для разработки большого, развесистого проекта на C++, обычно для этого лепят свою make-based (ну, или теперь msbuild-based) билд-систему.

[identity profile] bydlorus.livejournal.com 2013-05-14 07:46 pm (UTC)(link)
Если в свойствах линкера стоит "Use project dependencies"

[identity profile] bydlorus.livejournal.com 2013-05-14 07:48 pm (UTC)(link)
Нормально он подходит, т.к. внутри там msbuild и разные targets, которые я не знаю и знать не хочу, но в одном большом развесистом проекте их используют на полную катушку (генерация файлов, запуск своих тулзов и т.п.)

[identity profile] sleepy-drago.livejournal.com 2013-05-14 08:09 pm (UTC)(link)
cmake жеж для тех кого лялих уже покусал. Пишешь зависимость 1 раз и она подхватывается во всех конфигурациях.

[identity profile] vaddimka.livejournal.com 2013-05-14 08:16 pm (UTC)(link)
я просто для каждой депенденси делаю свой .props файл
и цепляю их в проект
напрягает, правда, что нельзя указать общие пропсы для всех проектов солюшна, но, в принципе, много времени это не отнимает
под линуксом/масосью - cmake или qmake, cmake гибче, но синтаксис несколько неудобен, qmake - достаточно топорен и прост, но не заточен под ряд вещей
жду пост про древовидные вложенные зависимости (это когда у включаемого модуля есть свои включаемые модули :), студия такое совсем никак не умеет (впрочем, оно обычно и не нужно, хотя я иногда добрым словом вспоминаю композитные бейзлайны в rational clearcase)

[identity profile] mstone.livejournal.com 2013-05-14 09:52 pm (UTC)(link)
Да, ровно об этом и речь: VS в чистом виде для больших проектов не подходит, народ традиционно лепит свои билд-системы (в данном случае — msbuild-based).

[identity profile] vit-r.livejournal.com 2013-05-15 06:21 am (UTC)(link)
Помнится был проект на разные платформы, там зависимости были сделаны через версионный контроль, потому как конфигурации сильно различались.

[identity profile] bydlorus.livejournal.com 2013-05-15 07:28 am (UTC)(link)
В таком случае vim не подходит для написания кода.