С++

May. 14th, 2013 01:49 pm
metaclass: (Default)
[personal profile] metaclass
А почему в C++ не принято делать автоматическое управление зависимостями?
Ну вот если в VS есть два проекта - почему прописывать в зависимый проект include и lib для каждой конфигурации сборки приходится руками, и если не использовать auto-linking - еще и имя в список библиотек добавлять приходится.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 25th, 2025 03:01 am
Powered by Dreamwidth Studios