Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Вопрос гуру make – как организовать правильно (так что би через 20 лет было не стыдно) make файл для следующего: Есть три проекта с++. Все они лежат в общей папочке. Один из проектов как бы главный и использует остальные два. Остальные два могут собираться в своих папочках в основном для исполнения UNIT тестов. Однако главная цель таки собрать основной проект для 32 и 64 платформ. Вопрос как лучше поступить - сделать основной Makefile в общей папочке и держать в каждой подпапочке свой Makefile и основной Makefile просто будет инклюдить все остальные и можно ожидать что они будут последовательно исполнятся. Хотя как я понял цель all может быть только одна и если мы инклюдим в один файл три других то будет ругань со стороны make что мол цель all должна быть одна. Либо сделать общий для всех проектов Makefile там определить цель all и в одном файле прописывать все зависимости. В этом случае у нас проект получается жесткой структуры – все завсит от одного файла, страдает модульнось. Посоветуйте как сделать именно правильно. Что бы бабушка гордилась Еще вдогонку - проект должен быть под 32 и 64 - как лучше поступить - сделать специальную цель для скажем 32 если я ожидаю, что большинство будет строить под 64 или держать два Makefile каждый для своей платформы в отдельных подпапках или как? Или скрипты специальные строительные сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 16:39 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
авторВопрос гуру make – как организовать правильно (так что би через 20 лет было не стыдно) make файл для следующего: Чтобы совсем не стыдно было через 20 лет, надо правильно организовать сборку проекта на CMake. авторЕсть три проекта с++. Все они лежат в общей папочке. Один из проектов как бы главный и использует остальные два. Остальные два могут собираться в своих папочках в основном для исполнения UNIT тестов. Однако главная цель таки собрать основной проект для 32 и 64 платформ. Вопрос как лучше поступить - сделать основной Makefile в общей папочке и держать в каждой подпапочке свой Makefile и основной Makefile просто будет инклюдить все остальные и можно ожидать что они будут последовательно исполнятся. Как бы всё равно. MAKE сам не накладывает какие-то ограничения и правила. autotools -- те уже да, накладывают. Код: plaintext 1. Цель all может быть только одна в одном makefile, в нескольких их может быть много. Каждый makefile обрабатывается независимо. авторЛибо сделать общий для всех проектов Makefile там определить цель all и в одном файле прописывать все зависимости. В этом случае у нас проект получается жесткой структуры – все завсит от одного файла, страдает модульнось. Ну, не думаю, что модульность зависит от того, как написан makefile. авторПосоветуйте как сделать именно правильно. Что бы бабушка гордилась Еще вдогонку - проект должен быть под 32 и 64 - как лучше поступить - сделать специальную цель для скажем 32 если я ожидаю, что большинство будет строить под 64 или держать два Makefile каждый для своей платформы в отдельных подпапках или как? Или скрипты специальные строительные сделать... Безусловно надо делать одним файлом, а целевую платформу задавать конфигурацией сборки. autotools для этого ВСЕГДА используют off-the-tree сборку -- сборку вне дерева исходников, каждая конфигурация -- в отдельном поддереве ФС. На самом деле рекомендую не использовать голый Makefile, а использовать либо autotools, либо qmake, либо CMake. CMake рекомендую больше всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 19:16 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
LowCoderВопрос гуру make – как организовать правильно (так что би через 20 лет было не стыдно) make файл для следующего:Возьми десяток многолетних open source проектов и посмотреть как это обычно делается. LowCoderЕсть три проекта с++. Все они лежат в общей папочке. Один из проектов как бы главный и использует остальные два. Остальные два могут собираться в своих папочках в основном для исполнения UNIT тестов.Если хочешь делать на чистом make, то читай главы 4.6 Phony targets и 5.7 Recursive Use. Там даже примеры есть как организовать работу с под-проектами. LowCoder Однако главная цель таки собрать основной проект для 32 и 64 платформ.Чем эти проекты отличаются друг от друга? Вот у меня сейчас один и тот-же проект пишется на WinXP-32 и на Linux Debian 64. Один и тот же makefile, никаких поклонов в сторону ОС или битности нет вообще. Из makefile я вызываю просто gcc - а он уже сам знает на какой ОС он живет и какая целевая платформа. Ну а если тебе действительно нужно какие-то специфические бубны для битности делать то можно например так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. А потом можешь запускать make platform=32. Но в 99% случаев у тебя будет в системе какая-нибудь переменная которая однозначно подскажет платформу и вручную ее почти никогда задавать никогда не нужно. Ну разве что если ты делаешь кросс-компиляцию и хост-платформа не совпадает с целевой. LowCoderВопрос как лучше поступить - сделать основной Makefile в общей папочке и держать в каждой подпапочке свой Makefile и основной Makefile просто будет инклюдить все остальные и можно ожидать что они будут последовательно исполнятся. Только не инклудить а вызывать. В случае инклуда у тебя будет последовательное исполнение одного единственного скрипта сборки. И его всегда надо будет вызывать из корневого каталога. А если делать независимые сценарии для каждого подпроекта плюс один сценарий с subdirs в корне проекта, то можно будет собирать любой кусок проекта независимо (или зависимо от других). Опять таки, читай главу 5.7, там есть примеры. LowCoderили держать два Makefile каждый для своей платформы в отдельных подпапках или как? Или скрипты специальные строительные сделать...Если нужно (удобнее), то можно сделать. что-то в духе: Код: plaintext 1. 2. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Но в таком разделении есть смысл только если платформо-зависимых флагов много и их удобнее держать в отдельных файлах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 20:16 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
MasterZivавторВопрос гуру make – как организовать правильно (так что би через 20 лет было не стыдно) make файл для следующего: Чтобы совсем не стыдно было через 20 лет, надо правильно организовать сборку проекта на CMake.У CMake смысл только один - если ты будешь собирать проект в разных make'ах. Вот если ты хочешь одновременно писать на GNU C/C++, на MS Visual Studio, и на каком-нибудь Borland - то CMake может быть полезен. Но на самом деле люди выбирающие CMake просто не умеют писать makefile. Я абсолютно убежден что CMake (да и autotools) это ненужный костыль с гигантскими ограничениями. Все что могут делать эти уродцы (CMake и autotools) можно сделать на gnu make с той-же легкостью и намного большим контролем над происходящим. При этом, make есть под все платформы и не привязан ни к одному транслятору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 20:25 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White Owl, А как просто в make сделать, что если в хедере изменилась только дата файла, то не надо перекомпилировать все что от него зависит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 21:11 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyв хедере изменилась только дата файла А что за злодей её изменил? cvs up вернёт её обратно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 21:17 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite Owl, А как просто в make сделать, что если в хедере изменилась только дата файла, то не надо перекомпилировать все что от него зависит?Если ты мне объяснишь смысл этого желания я тебе объясню как это сделать. По моему, если дата заголовка изменилась, НАДО перекомпилировать все что от него зависит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 21:44 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly Moskovskyв хедере изменилась только дата файла А что за злодей её изменил? cvs up вернёт её обратно. Дата может меняться по множеству причин, самая простая - внесли в текст изменения, потом вернули обратно. И например, исходники в таком состоянии что нельзя делать ни коммит, ни апдейт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 21:47 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlЕсли ты мне объяснишь смысл этого желания я тебе объясню как это сделать. По моему, если дата заголовка изменилась, НАДО перекомпилировать все что от него зависит. А по-моему дата исходника никак не должна влиять на компиляцию - в ней не содержатся никакие данные от которых зависит содержимое конечного бинарника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 21:48 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlЕсли ты мне объяснишь смысл этого желания я тебе объясню как это сделать. Т.е. просто объяснить нельзя - необходимые опции в make добавятся только после моего объяснения ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 21:51 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite Owl, А как просто в make сделать, что если в хедере изменилась только дата файла, то не надо перекомпилировать все что от него зависит?Но вообще-то, это сделать элементарно. Просто убери зависимость от заголовка и все. А если все совсем плохо, и тебе надо убрать заголовок из уже объявленного списка заголовков, то filter-out спасет: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 22:52 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White Owl, Наоборот, я хочу чтобы была зависимость от заголовка. Но не от его даты, а от содержимого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 22:58 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlЕсли ты мне объяснишь смысл этого желания я тебе объясню как это сделать. По моему, если дата заголовка изменилась, НАДО перекомпилировать все что от него зависит. А по-моему дата исходника никак не должна влиять на компиляцию - в ней не содержатся никакие данные от которых зависит содержимое конечного бинарника.Дата исходника это главный источник ответа на вопрос: "изменился исходник или нет?" Если ты хочешь вместо даты изменения файла проверять какой-то другой критерий (ну например есть реальная разница между рабочей копией исходника и архивной), то можно сделать первичную зависимость целей от специальных флаговых файлов а эти флаговые файлы уже создавать/трогать на основе диффа от рабочего исходника и архивной копии исходника. Хотя зачем это все нужно я не представляю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 23:00 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlДата исходника это главный источник ответа на вопрос: "изменился исходник или нет?" Нет. Это просто суррогатный признак изменения содержимого, за неимением лучшего в make. White OwlЕсли ты хочешь вместо даты изменения файла проверять какой-то другой критерий (ну например есть реальная разница между рабочей копией исходника и архивной), то можно сделать первичную зависимость целей от специальных флаговых файлов а эти флаговые файлы уже создавать/трогать на основе диффа от рабочего исходника и архивной копии исходника. Да я понял уже, что make не умеет этого без костылей :) White OwlХотя зачем это все нужно я не представляю. Если я работаю над проектом и внес изменения в хедер от которого зависит большая часть проекта, а потом вернул обратно (или например переключился на другую ветку в контроле версий, а потом обратно - эффект такой же: даты файлов меняются, а содержимое нет), то я не хочу ждать перекомпиляции проекта, когда этого можно избежать. Проекты они знаете ли немаленькие бывают. Да и вообще, мало ли что вы себе не представляете. Вселенная гораздо шире, чем ваш личный опыт :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 23:21 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlХотя зачем это все нужно я не представляю. Если я работаю над проектом и внес изменения в хедер от которого зависит большая часть проекта, а потом вернул обратно (или например переключился на другую ветку в контроле версий, а потом обратно - эффект такой же: даты файлов меняются, а содержимое нет), то я не хочу ждать перекомпиляции проекта, когда этого можно избежать.Хорошо, показывай альтернативу make которая способна узнать что файл вернули в предыдущее состояние. Anatoly MoskovskyДа и вообще, мало ли что вы себе не представляете. Вселенная гораздо шире, чем ваш личный опыт :)Ну вот и обогати мой опыт пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2013, 23:41 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlХорошо, показывай альтернативу make которая способна узнать что файл вернули в предыдущее состояние. scons умеет и по дате и по содержимому зависимости строить. White OwlНу вот и обогати мой опыт пожалуйста. Я выше уже привел два кейса. В прошлом у меня бывали и более жесткие кейсы. Например если контроль версий при чекауте устанавливает в локальных файлах дату из репозитория, и как часть сборки генерятся какие-то файлы, то периодически возникала ситуация когда сгенеренные файлы были новее новой версии файлов из которых они генерились. Это уже конкретная проблема, а не неудобство, и она не заметна пока не наткнешься случайно на неверно работающий код. К счастью Git с которым я сейчас работаю всегда при чекауте ставит текущую дату и не приходится извращаться в проектах где не используется scons. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 00:35 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlХорошо, показывай альтернативу make которая способна узнать что файл вернули в предыдущее состояние. scons умеет и по дате и по содержимому зависимости строить.Не совсем корректная альтернатива. scons это не инструмент, а библиотека. Пользуясь которой можно написать программу сценария. Если хочешь корректно сравнивать scons и make, то бери makefile в котором каждое правило расписано через $(shell ...). В принципе, у scons есть положительные моменты. И я бы его пожалуй попытался бы использовать если бы он не был написан на Питоне. Вот когда его перепишут на чем-либо более надежном тогда и будем брать его в реальную работу. А пока, при всех своих достоинствах и умениях scons это симпатичная идея напрочь убитая собственным фреймворком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 01:28 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White Owlscons это не инструмент, а библиотека. Да-да, а когда вы в ком. строке набираете scons - это вы пишете код использующий эту библиотеку ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 01:37 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite Owlscons это не инструмент, а библиотека. Да-да, а когда вы в ком. строке набираете scons - это вы пишете код использующий эту библиотеку ?Нет, набирая scons в командной строке я запускаю скрипт который подгружает файл SConstruct как модуль и выполняет его. А вот когда я пишу содержимое файла SConstruct - то да, я пишу программу на Питоне 2.4 использующей эту библиотеку. Да... А если у меня стоит Питон 3.2, то scons мрёт почти сразу. А если 2.6 то работает, но потом тоже мрёт. Потому что Питон не совместим сам с собой. Поэтому не смотря на все плюшки scons'а - я очень не советую использовать его в серьезных проектах. Из более-менее серьезных альтернатив gnu make я могу назвать только makepp. Вернее это альтернатива для scons. Тот же самый принцип, только Перл вместо Питона и при этом полная обратная совместимость со стандартным make. Единственный минус makepp - его малая известность. Я сам, если честно, только документацию на него читал, да ради прикола несколько примеров попробовал. А на практике, привычка к make берет свое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 02:04 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White Owlкогда я пишу содержимое файла SConstruct - то да, я пишу программу на Питоне Если вы пишете этот файл как программу на питоне, а не как декларативное описание сборки, то вы неверно используете scons. Не удивительно, что у всех он работает, а у вас - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 03:12 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlMasterZivпропущено... Чтобы совсем не стыдно было через 20 лет, надо правильно организовать сборку проекта на CMake.У CMake смысл только один - если ты будешь собирать проект в разных make'ах. Вот если ты хочешь одновременно писать на GNU C/C++, на MS Visual Studio, и на каком-нибудь Borland - то CMake может быть полезен. Но на самом деле люди выбирающие CMake просто не умеют писать makefile. Я абсолютно убежден что CMake (да и autotools) это ненужный костыль с гигантскими ограничениями. Все что могут делать эти уродцы (CMake и autotools) можно сделать на gnu make с той-же легкостью и намного большим контролем над происходящим. При этом, make есть под все платформы и не привязан ни к одному транслятору. Люди выбирающие CMake планируют рационально свое время. Мы, например, благодаря CMake, перешли с Visual Studio 6 на Visual Studio 10 за две недели и то только потому, что надо было выравнивать исходники в плане их компилируемости. Сам же студийный проект мы получили за счетное число секунд. А проект нешуточный о 600 dll-ках. Так что, мета описание проекта плюс последующая генерация под конкретную систему сборки выбор профессионалов :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 10:06 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlMasterZivпропущено... Чтобы совсем не стыдно было через 20 лет, надо правильно организовать сборку проекта на CMake.У CMake смысл только один - если ты будешь собирать проект в разных make'ах. ... При этом, make есть под все платформы и не привязан ни к одному транслятору. У cmake есть один смысл — он человеческий, в отличие от make, autotools и многого другого. И работает, в отличие от boostbuild и другого человеческого в этой области. Вот в этом и смысл использовать его. А про make под все платформы — это просто песня, ну так повеселил... Во-первых, его нет. Т.е. он есть, но он везде разный. А во вторых, одним make ты нифига не соберешь, нужен shell и ещё много всякой всячины. А ее нет. Вот за этим и нужен CMake. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 11:37 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlНо на самом деле люди выбирающие CMake просто не умеют писать makefile. Ты абсолютно прав. Если бы ты знал, сколько раз я изучал make и благополучно забывал после того, как в нем терялась нужда... Make — это абсолютно невменяемый тул, У его существования есть только два оправдания — традиция, раньше ничего другого не было, и что он таки работает. Кстати, я видал не раз, как люди просто писали скрипты сборки на шеле, чем связываться с make ом. White OwlЯ абсолютно убежден что CMake (да и autotools) это ненужный костыль с гигантскими ограничениями. Ты абсолютно неправ. Как бы чтобы это доказать, достаточно поискать в сети проекты аналогичного назначения и прочитать мотивацию к их созданию. Очень хорошо это написано в Ant е. Почитай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 11:47 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite Owl, А как просто в make сделать, что если в хедере изменилась только дата файла, то не надо перекомпилировать все что от него зависит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 12:00 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White Owlто filter-out спасет: Код: plaintext 1. 2. 3. 4. 5. ... который поддерживается только GNU Make-ом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 12:01 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковМы, например, благодаря CMake, перешли с Visual Studio 6 на Visual Studio 10 за две недели и то только потому, что надо было выравнивать исходники в плане их компилируемости. Ну ладно, Толь, не скромничай, за две недели-то мы управились толко потому, что ты у нас такой гениальный. Но CMake всё равно классный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 12:04 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Благодарю всех ответивших - есть очень толковые советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 12:56 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Мне непонятно только - я сделал для пробы. Общая папка в ней две подпапки где собственно лежат два проекта с++ со своими Makefile. Каждый их этих Makefile имеет цель all. Если в общей папочки я напишу Makefile следующего вида Код: plaintext 1. 2. то соберется только тот проект который во второй папке а сам make наругает что Код: plaintext 1. 2. 3. а почему? по идее все инклюды же должны просто исполнятся и все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 13:10 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
LowCoder, Вам выше уже писали - не надо include. Вам надо запускать вложенный экземпляр make для подпроектов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 13:18 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
LowCoder а почему? по идее все инклюды же должны просто исполнятся и все... И я тоже писал. В одном makefile таргеты должны быть уникальны. В разных -- не обязаны. Если ты делаешь include , то ты соединяешь всё в один make-файл. Соответственно, таргеты должны быть уникальны во всех файлах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 16:55 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
MasterZivWhite OwlЯ абсолютно убежден что CMake (да и autotools) это ненужный костыль с гигантскими ограничениями. Ты абсолютно неправ. Как бы чтобы это доказать, достаточно поискать в сети проекты аналогичного назначения и прочитать мотивацию к их созданию. Очень хорошо это написано в Ant е. Почитай.Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть? А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные. Мотивация для создания Ant чуть более серьезная: у Sun был своя версия Solaris-only сборщика и когда Sun начала выкладывать свои проекты в открытый доступ этот собственный сборщик был переписан в кросс-платформенный. Почему у Sun был свой собственный сборщик, тоже более-менее понятно - коммерческая контора боялась использовать открытый инструмент. Как это все делает меня неправым в моем предыдущем утверждении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 19:16 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlMasterZivпропущено... Ты абсолютно неправ. Как бы чтобы это доказать, достаточно поискать в сети проекты аналогичного назначения и прочитать мотивацию к их созданию. Очень хорошо это написано в Ant е. Почитай.Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть? А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные. Рассуждение на уровне - yacc, lex костыль для тех кто матрицу переходов LALR грамматики составлять сам не хочет. Всегда следует отдавать предпочтение абстрактному описанию с последующей кодогенерацией ручному кодированию. Резон очень прост - всегда соскочить можно просто меняя кодогенератор. Как ты можешь соскочить с make мне не очень понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 20:03 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
С своей фирме мы достигли достаточного уровня лаконизма описания проекта, чтобы рекламировать CMake как достойное средство. Чтобы не быть голословным: Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 20:10 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
На выходе работы cmake мы имеем не только solution или makefile для билдмашины, но и xml описание зависимостей модулей, которое поставляется update service и обеспечивает обновление модулей по требованию (много их у нас). И это имея лишь абстрактное описание проекта - имхо, неплохие бенефиты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 20:14 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlMasterZivпропущено... Ты абсолютно неправ. Как бы чтобы это доказать, достаточно поискать в сети проекты аналогичного назначения и прочитать мотивацию к их созданию. Очень хорошо это написано в Ant е. Почитай.Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть? А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные. Мотивация для создания Ant чуть более серьезная: у Sun был своя версия Solaris-only сборщика и когда Sun начала выкладывать свои проекты в открытый доступ этот собственный сборщик был переписан в кросс-платформенный. Почему у Sun был свой собственный сборщик, тоже более-менее понятно - коммерческая контора боялась использовать открытый инструмент. Как это все делает меня неправым в моем предыдущем утверждении? Ты абсолютно неправ. Прогресс не остановить. Ура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 21:07 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть? Универсальным решением про сборке. Как бы твои рассуждения сводятся к тому, что самая первая реализация самая правильная. А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные. Ну да если он наступает на ногу, а нога гнется, то да, без костылей не обойтись... Мотивация для создания Ant чуть более серьезная: Ты НЕ прочитал. А зря. Там очень все доходчиво было. Основная идея — что make не переносим и не самодостаточен. Если ты будешь с этими фактами ещё и спорить — то уж и не знаю что тебе говорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 21:19 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковWhite Owlпропущено... Чтобы доказать что я прав: достаточно вспомнить что и CMake и autotools выдают на выходе makefile который будет исполняться тем-же самым make. Спрашивается, чем кроме костыля эти инструменты могут быть? А мотивация создания у костыля только одна - человек не может ходить на своих родных ногах, вот и изобретает дополнительные. Рассуждение на уровне - yacc, lex костыль для тех кто матрицу переходов LALR грамматики составлять сам не хочет.Принцип верен, но расстояние между CFG и исходником с LALR намного больше чем разница между входным файлом CMakeList.txt и makefile. Не смотря на то, что я делал ручные переводы из CFG в LALR (два раза в код на О'Caml, один раз в С) я не смогу сходу взять любую грамматику и закодировать автомат для нее. Но взяв любой CMakeList.txt я могу почти сходу написать соответствующий makefile. Подглядеть в доку на CMake понадобится пару раз, но и только. Так что нужность Яка с кузенами я признаю, нужность CMake - не признаю. Анатолий ШироковВсегда следует отдавать предпочтение абстрактному описанию с последующей кодогенерацией ручному кодированию. Резон очень прост - всегда соскочить можно просто меняя кодогенератор.Здесь ключевое слово "абстрактному описанию". У CMake описание совсем не абстрактное, а очень даже конкретное. Анатолий ШироковКак ты можешь соскочить с make мне не очень понятно.А зачем мне с него соскакивать, простите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 00:10 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
MasterZivТы абсолютно неправ. Прогресс не остановить. Ура.Да, да. Все знают что я ретроград и пещерный человек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 00:18 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Тема очень кстати. Как раз выбораем билд-систему для перевода vs-проекта под linux - кажется CMake то что нужно. У кого есть поделитесь е-книжкой Mastering CMake желательно 5th или 4th edition, что-то она не особо гуглится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 09:34 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
MasterZivУ cmake есть один смысл — он человеческий, в отличие от make, autotools и многого другого. И работает, в отличие от boostbuild и другого человеческого в этой области. Я прошу прощения что лезу в ваш калашниковый ряд, но по-моему cmake и autotool ставить в один ряд с make мягко говоря некорректно... У них несколько разные цели и задачи: The purpose of the make utility is to determine automatically which pieces of a large program need to be recompiled, and issue the commands to recompile them. (И на мой скромный взгляд, ничего более вменяемого чем make для этой цели ещё не придумали) The "cmake" executable is the CMake command-line interface. It may be used to configure projects in scripts. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 12:02 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковНа выходе работы cmake мы имеем не только solution или makefile для билдмашины, но и xml описание зависимостей модулей, которое поставляется update service и обеспечивает обновление модулей по требованию (много их у нас). И это имея лишь абстрактное описание проекта - имхо, неплохие бенефиты. Надо ещё добавить, что с его CMake помощью мы ещё и перешли с vc6 сразу и на vc7, и на vc 2010, И автоматом получили систему сборки для Linux. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 12:26 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
v6yЯ прошу прощения что лезу в ваш калашниковый ряд, Ничего, ничего. только ряд калашный, а не калашниковый. v6yно по-моему cmake и autotool ставить в один ряд с make мягко говоря некорректно... У них несколько разные цели и задачи: Ровно одни и те же у них задачи. v6yThe purpose of the make utility is То мейк, я бы сказал. Собирать проекты. Те же цели и у всех остальных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 12:33 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
MasterZivТо мейк, я бы сказал. Собирать проекты. Те же цели и у всех остальных. Не согласен. У cmake задача сконфигурировать проект для его дальнейшей компиляции (то бишь учесть всяко-разные ньюансы как то наличие тех или иных библиотек, версию операционки и т.д.), а у make задача скомпилировать проект на основании правил прописанных в Makefile. Поэтому, с моей точки зрения, и make и cmake в крайнем случае уместно рассматривать только как части чего-то более целого и ни в коем случае не сравнивать их между собой. Спор между Анатолием и WhiteOwl собственно и сводится к тому, что (если рассматривать немного упрощено) Анатолий предпочитает генерировать Makefile с помощью cmake, а WhiteOwl писать его (Makefile) руками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 13:41 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
v6yУ cmake задача сконфигурировать проект для его дальнейшей компиляции (то бишь учесть всяко-разные ньюансы как то наличие тех или иных библиотек, версию операционки и т.д.), а у make задача скомпилировать проект на основании правил прописанных в Makefile Вы так говорите, как будто запустить компиляцию из сгенерированных скриптов - это огромная работа, а не одна команда шелла. Фаза запуска компиляции никого не интересует при сравнении утилит сборки. Важна предоставляемая функциональность всей системы, а также уровень абстракции. Вы можете писать программу на ассемблере и гордится тем что знаете ассемблер, а другой за то же время сделает десяток программ на С (хоть при необходимости и на ассемлере сможет писать). Потому что уровень абстракции очень сильно влияет на скорость и качество разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 14:17 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlАнатолий ШироковВсегда следует отдавать предпочтение абстрактному описанию с последующей кодогенерацией ручному кодированию. Резон очень прост - всегда соскочить можно просто меняя кодогенератор.Здесь ключевое слово "абстрактному описанию". У CMake описание совсем не абстрактное, а очень даже конкретное. Я не случайно привел описание одного из наших проектов, чтобы показать, что синтаксис описания вполне себе пригоден для звания "абстрактного описания". Артефакты не имеющие к этому описанию конечно присутствуют, но тоже достаточно легко поддаются анализу, если он потребуется. White OwlАнатолий ШироковКак ты можешь соскочить с make мне не очень понятно.А зачем мне с него соскакивать, простите? Вопрос твой ожидаемый. Но мало ли, захочешь подебажить свой проект под студией. Я себе это могу повзолить просто сгенерировав solution под конкретную версию студии? А ты как этого достигаешь? Конечно, если речь идет о небольшом проекте, то можно и накидать на коленке студийный проект, но когда у тебя 600 модулей со сложными взаимосвязями, то здесь без чего-либо отвязанного от конкретной среды сборки просто необходимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 14:26 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
v6yMasterZivТо мейк, я бы сказал. Собирать проекты. Те же цели и у всех остальных. Не согласен. У cmake задача сконфигурировать проект для его дальнейшей компиляции CMake -- система сборки. Её задача -- собирать. То же самое у make. Не надо тут играть словами и смыслами, и то, и другое, собирает выполняемые файлы из исходных текстов. Всё очень просто и ясно до предела. То, что CMake для этой цели использует make-файлы иногда -- это не принципиально, можно было бы написать бэкенд для CMAKE, который бы сам собирал всё. Просто у CMake как у проекта задача именно такая -- обеспечить возможность работать с твоим CMake-проектом в любых средах сборки или программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 15:13 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковWhite OwlА зачем мне с него соскакивать, простите? Вопрос твой ожидаемый. Но мало ли, захочешь подебажить свой проект под студией. Я себе это могу позволить просто сгенерировав solution под конкретную версию студии. А ты как этого достигаешь? Конечно, если речь идет о небольшом проекте, то можно и накидать на коленке студийный проект, но когда у тебя 600 модулей со сложными взаимосвязями, то здесь без чего-либо отвязанного от конкретной среды сборки просто нельзя. Вот нужные и важные слова про Make, про его недостатки. Это из документации по Ant, Java-based build tool. Ant docsIntroduction Apache Ant is a Java-based build tool. In theory, it is kind of like make, without make's wrinkles. Why? Why another build tool when there is already make, gnumake, nmake, jam, and others? Because all those tools have limitations that Ant's original author couldn't live with when developing software across multiple platforms. Make-like tools are inherently shell-based : they evaluate a set of dependencies, then execute commands not unlike what you would issue on a shell . This means that you can easily extend these tools by using or writing any program for the OS that you are working on; however, this also means that you limit yourself to the OS , or at least the OS type, such as Unix, that you are working on. ... Ant is different. Instead of a model where it is extended with shell-based commands, Ant is extended using Java classes . Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed. Each task is run by an object that implements a particular Task interface. Granted, this removes some of the expressive power that is inherent in being able to construct a shell command such as `find . -name foo -exec rm {}`, but it gives you the ability to be cross-platform--to work anywhere and everywhere . And hey, if you really need to execute a shell command, Ant has an <exec> task that allows different commands to be executed based on the OS it is executing on. (выделено жирным мной) Я не считаю Ant идеальным, но этот проект -- минимальное усилие, которое надо было давно уже до появления ant-а сделать, чтобы получить человеческую среду сборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 15:23 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковWhite Owlпропущено... Здесь ключевое слово "абстрактному описанию". У CMake описание совсем не абстрактное, а очень даже конкретное. Я не случайно привел описание одного из наших проектов, чтобы показать, что синтаксис описания вполне себе пригоден для звания "абстрактного описания". Нет, не пригоден. Хорошо, перефразирую: Уровень абстракции у CMake абсолютно такой же как и у make. Абстрактное описание сборки (как я его понимаю) это то что у меня есть на уровне корня проекта: Собрать специальные инструменты используемые для сбора программы, собрать промежуточные библиотеки, собрать программу, собрать плагины. Причем именно в этом порядке (хотя плагины можно собирать и параллельно с программой). Вот пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. То что в своем CMakeList.txt ты не показываешь как конкретно надо компилировать .cpp ничего не значит. Я в своем makefile тоже могу этого не показывать. Вот тебе makefile от одного из плагинов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Как видишь, количество кода описывающего сценарий точно такое-же как и у CMake. Уровень абстракции описания тоже совпадает. Анатолий ШироковWhite Owlпропущено... А зачем мне с него соскакивать, простите?Вопрос твой ожидаемый. Но мало ли, захочешь подебажить свой проект под студией. Я себе это могу повзолить просто сгенерировав solution под конкретную версию студии? А ты как этого достигаешь? Конечно, если речь идет о небольшом проекте, то можно и накидать на коленке студийный проект, но когда у тебя 600 модулей со сложными взаимосвязями, то здесь без чего-либо отвязанного от конкретной среды сборки просто необходимо.Смеешься?! 600 модулей написанных для одного компилятора запихнуть в другой компилятор и просто так подебажить? Ну-ну... То-то тут постоянно возникают вопросы: "почему в vc это работает а в g++ не работает?", и наоборот. А ты сводишь всю сложность межкомпиляторного перехода к переводу сценария сборки? Шутник. И нет, я не захочу дебажить проект под студией. Во первых, для дебага есть логи, во вторых dbg. Зачем мне студия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 19:55 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
MasterZivCMake -- система сборки. Её задача -- собирать. То же самое у make. Не надо тут играть словами и смыслами, и то, и другое, собирает выполняемые файлы из исходных текстов. Всё очень просто и ясно до предела. Да вот мне тоже казалось, что тут всё просто и ясно: основная задача CMake именно подготовить к сборке в той или иной среде, задача же make - сама сборка как таковая. Просто у CMake как у проекта задача именно такая -- обеспечить возможность работать с твоим CMake-проектом в любых средах сборки или программирования. Совершенно верно. А задача make автоматически определить какие части большой программы перекомпилировать и с помощью каких команд. Казалось бы различие в целях и задачах на лицо, ан нет же... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 19:58 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyv6yУ cmake задача сконфигурировать проект для его дальнейшей компиляции (то бишь учесть всяко-разные ньюансы как то наличие тех или иных библиотек, версию операционки и т.д.), а у make задача скомпилировать проект на основании правил прописанных в Makefile Вы так говорите, как будто запустить компиляцию из сгенерированных скриптов - это огромная работа, а не одна команда шелла. Фаза запуска компиляции никого не интересует при сравнении утилит сборки. Важна предоставляемая функциональность всей системы, а также уровень абстракции. Вы можете писать программу на ассемблере и гордится тем что знаете ассемблер, а другой за то же время сделает десяток программ на С (хоть при необходимости и на ассемлере сможет писать). Потому что уровень абстракции очень сильно влияет на скорость и качество разработки. Не совсем понял какое это имеет отношение к высказанному мной мнению, что сравнение cmake и make не является корректным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 19:59 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
v6y, Не совсем понял какое это имеет отношение к высказанному мной мнению, что сравнение cmake и make не является корректным. Такое отношение, что сравнение вполне корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 20:02 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
MasterZivv6y, Не совсем понял какое это имеет отношение к высказанному мной мнению, что сравнение cmake и make не является корректным. Вырвано из контекста! Такое отношение, что сравнение вполне корректно. Ок, остамся каждый при своем мнении :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 20:09 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
v6y, Любые вещи можно сравнивать, когда вы смотрите на них с точки зрения своих интересов, с точки зрения целей, того что вы от них ждете. Например крупная торговая корпорация может сравнивать бульдозер и джинсы с точки зрения спроса на них, что лучше продается. Так же и тут, все выше отписавшиеся, имеют вполне конкретные пожелания к системе сборки, им нужно достичь определенных целей, собрать проект, отследить зависимости. Им не важна внутренняя кухня, вот они и сравнивают, относительно целей. Чтобы собрать эту кучу исходников мне нужно потратить столько-то времени и написать столько-то строчек кода на CMake, или столько времени и кода на make + оценивают легкость сопровождения. И совершенно не важно что один из них использует другой внутренне. Сравнение идет с точки зрения интерфейса, что конкретно нужно сделать чтобы собрать проект. А все остальное, корректно не корректно, это пустософия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 20:21 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
MasterZivВот нужные и важные слова про Make, про его недостатки. Это из документации по Ant, Java-based build tool.Чушь там написана. Ant docsWhy another build tool when there is already make, gnumake, nmake, jam, and others? Because all those tools have limitations that Ant's original author couldn't live with when developing software across multiple platforms. Make-like tools are inherently shell-based : they evaluate a set of dependencies, then execute commands not unlike what you would issue on a shell . This means that you can easily extend these tools by using or writing any program for the OS that you are working on; however, this also means that you limit yourself to the OS , or at least the OS type, such as Unix, that you are working on.При чем здесь ОС? Зависимость не от ОС, а от наличия тех самых инструментов. А gnu tool chain есть практически под все ОС. Ant docsAnt is different. Instead of a model where it is extended with shell-based commands, Ant is extended using Java classes . Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed. Each task is run by an object that implements a particular Task interface.А если конкретно, то у shell-based сборщиков работу делают shell commands, а у Ant - некие объекты с Task интерфейсом. Правда если заглянуть внутрь этих объектов то ты найдешь там те-же самые shell commands. Но зато XML, tasks, target tree... слова красивые... Надо читать не рекламу а историю. Когда Sun был крутой фирмой а Solaris крутой ОС - в Solaris использовали свой make. Но это был не GNU make, а своя собственная утилита, потому что open-source утилиты в крутых фирмах в те времена не использовали. Да и был GNU make тогда еще маленький и глупенький. А потом придумали Java и встал вопрос о кросс-платформенности. Но GNU make по прежнему был open-source а Sun - крутой фирмой которая косо смотрит на open-source утилиты (если они написаны не ими). Поэтому и родился Ant - потому что Java и потому что "не-make". И msbuild по этой же причине появился - потому что "не-make". Микрософты боролись за уникальность и за то чтобы пользователи подсев на студию не могли с нее слезть. Поэтому они и заменили почти универсальный nmake на msbuild а потом и его убили ради сборщика встроенного в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 20:27 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
sherzod_v6y, Любые вещи можно сравнивать, когда вы смотрите на них с точки зрения своих интересов, с точки зрения целей, того что вы от них ждете. Например крупная торговая корпорация может сравнивать бульдозер и джинсы с точки зрения спроса на них, что лучше продается. Так же и тут, все выше отписавшиеся, имеют вполне конкретные пожелания к системе сборки, им нужно достичь определенных целей, собрать проект, отследить зависимости. Им не важна внутренняя кухня, вот они и сравнивают, относительно целей. Чтобы собрать эту кучу исходников мне нужно потратить столько-то времени и написать столько-то строчек кода на CMake, или столько времени и кода на make + оценивают легкость сопровождения. И совершенно не важно что один из них использует другой внутренне. Сравнение идет с точки зрения интерфейса, что конкретно нужно сделать чтобы собрать проект. А все остальное, корректно не корректно, это пустософия. Вы извините, но пустософия это как раз ваш пост, особенно в плане сравнение бульдозера с джинсами. Сравнивать вещи можно, но вы же не назовете джинсы невменяемой вещью, только потому что ими нельзя землю копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 20:45 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
v6y, Да давайте закроем тему. Всем все ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2013, 12:42 |
|
||
|
Организовать оптимально Makefile
|
|||
|---|---|---|---|
|
#18+
White OwlAnatoly Moskovskyпропущено... Да-да, а когда вы в ком. строке набираете scons - это вы пишете код использующий эту библиотеку ?Нет, набирая scons в командной строке я запускаю скрипт который подгружает файл SConstruct как модуль и выполняет его. А вот когда я пишу содержимое файла SConstruct - то да, я пишу программу на Питоне 2.4 использующей эту библиотеку. Да... А если у меня стоит Питон 3.2, то scons мрёт почти сразу. А если 2.6 то работает, но потом тоже мрёт. Потому что Питон не совместим сам с собой. Поэтому не смотря на все плюшки scons'а - я очень не советую использовать его в серьезных проектах. Из более-менее серьезных альтернатив gnu make я могу назвать только makepp. Вернее это альтернатива для scons. Тот же самый принцип, только Перл вместо Питона и при этом полная обратная совместимость со стандартным make. Единственный минус makepp - его малая известность. Я сам, если честно, только документацию на него читал, да ради прикола несколько примеров попробовал. А на практике, привычка к make берет свое :) ой какие ужасы прекрасно сконс работает, и билд-скрипты писать на питоне луше чем не какой- то убогой фигне вроде мейка напиши к примеру создание rpm-ки в мейкфайле, я поржу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2013, 22:30 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2020158]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 164ms |

| 0 / 0 |
