LINUX.ORG.RU

CMake с чего начать?


0

0

Посоветуйте с чего начать изучение CMake? На офф сайте инфы много, но она как-то не систематизирована. Например так и не въехал как при генерации Makrfile CMake пониемает какой исходник от каких заголовков в проекте зависит, если вообще такие зависимости учитываются...

Сначала код писать научись, да, да имено код, имено писать....

ОМГ кто их понаражал?

erfea ★★★★★
()

> Например так и не въехал как при генерации Makrfile CMake пониемает какой исходник от каких заголовков в проекте зависит

А есть такая система сборки, которая понимает? Можно пример?

anonymous
()

Читай введение в синтаксис цмейка, потом man cmake.

Зависимости? Очевидно же, man gcc на предмет -M.

l5k
()

Лучше не начинай. Лучше НОРМАЛЬНО (да! да! да! именно "НОРМАЛЬНО") разберись с autotools. Для начала. А уж потом решай -- надо тебе или нет CMake...

Да. И код уж будь ласка научись писать. Грамотно...

the_Shadow
()
Ответ на: комментарий от anotheranonymous

Ну да... Вы бы, друг мой, это рассказали бы это кому-нибудь из виндарасов... А то я могу тайну открыть -- при использовании троицы команд вида "configure; make; make install-strip", Вы именно этим заплесневелым куском говна и пользуетесь... Даже если Вы ровным счётом них об этом не знаете...

the_Shadow
()
Ответ на: комментарий от the_Shadow

>А то я могу тайну открыть
КАКОЙ ТЫ УМНЫЙ Я НЕ ЗНАЛ!!!111

>Вы именно этим заплесневелым куском говна и пользуетесь...

Вот именно этого я и не хочу, а особенно разбираться в чужих автотулзах, если придется, потому что даже маленький проект с ними выглядит как говно.

anotheranonymous
()

>Например так и не въехал как при генерации >Makrfile CMake пониемает какой исходник от >каких заголовков в проекте зависит, если >вообще такие зависимости учитываются

у него есть встроенный сканер зависимостей,
например здесь он упоминается

http://www.cmake.org/Wiki/CMake_FAQ#CMake_dependency_scanner

fghj ★★★★★
()
Ответ на: комментарий от anotheranonymous

>КАКОЙ ТЫ УМНЫЙ Я НЕ ЗНАЛ!!!111

Нда... Я рождён чтобы сделать тебя счастливым... =)))))))

> Вот именно этого я и не хочу,

Поразительно. Кто бы спрашивал...

> а особенно разбираться в чужих автотулзах,

Внимание, вопрос -- а что с ними не так, что там особо сложного?

> потому что даже маленький проект с ними выглядит как говно

Странно. Постоянно пользуюсь. И в своих и в чужих проектах. Проблем не вижу.

the_Shadow
()
Ответ на: комментарий от the_Shadow

Какой смысл сейчас делать новый проект на этом говне мамонта под названием autotools? Какие плюсы по сравнению с cmake ?

Reset ★★★★★
()
Ответ на: комментарий от Reset

Могу только предположить, что для конфигуряния автотулами не надо иметь ничего, кроме POSIX shell. С либтулом уже хуже, да...

Ни наю, я после долгих и мучительных раздумий для себя сделал выбор в пользу cmake. Автотулы кажуться расширяемее, но ну этот black magic с m4 куда-нибудь. Устал он меня. 8))

kemm
()
Ответ на: комментарий от anonymous
% rpm -q --requires cmake | grep c++
libstdc++.so.6
libstdc++.so.6(CXXABI_1.3)
libstdc++.so.6(GLIBCXX_3.4)
libstdc++.so.6(GLIBCXX_3.4.9)
% ls -lh /usr/lib/libstdc++.so.6.0.10
-rwxr-xr-x 1 root root 944K Nov  5  2008 /usr/lib/libstdc++.so.6.0.10

Это таки критично?

Я хоть и убеждённый крестофоб, но достаточно лицемерен, чтобы использовать довольно таки удобный cmake.

l5k
()
Ответ на: комментарий от kemm

> Дело не в том, что cmake себе требует, а в том, что любая софтина будет требовать cmake.

Только для компиляции. Зато архив с исходниками не будет тяжелее на пару сотен кило только из-за того, что внутри autotools в полном снаряжении.

const86 ★★★★★
()
Ответ на: комментарий от const86

> Зато архив с исходниками не будет тяжелее на пару сотен кило только из-за того, что внутри autotools в полном снаряжении.

Где вы такое видели, что configure.ac + пачка Makefile.am тянут на 200 кило в архиве? 8-[ ]

kemm
()
Ответ на: комментарий от kemm

> Где вы такое видели, что configure.ac + пачка Makefile.am тянут на 200 кило в архиве? 8-[ ]

Где вы видели тарболлы с configure.ac + Makefile.am внутри? Обычно выкладывают архив, созданный make dist, после прогона всех автотулзов. А там один только configure под две сотни кило порой. Зато ему не нужно ничего, кроме шелла...

const86 ★★★★★
()
Ответ на: комментарий от l5k

В исходниках с каждом кдешной программой идет Messages.sh, который извлекает сообщения для последующей работы с gettext, потому как CMake этого не умеет.

anonymous
()
Ответ на: комментарий от kemm

Дык в архиве-то он будет ~20 кило.

Эх... Вот список файлов, сгенеренных автотулзами, с размерами:

761 config.h.in
11419 missing
11870 INSTALL
13663 install-sh
14335 doc/Makefile.in
15537 src/Makefile.in
18615 depcomp
23937 Makefile.in
34539 config.sub
34605 aclocal.m4
46181 config.guess
155214 configure

И размер архива получается 141247 против 35631, если запаковать из репы. И это ещё мелкий проект, никаких наворотов в configure.ac ;)

const86 ★★★★★
()
Ответ на: комментарий от const86

Странно, мне обычно configure килов на 700 попадаются...

py3k$ ls -lah configure
-rwxr-xr-x 1 odmin odmin 711K 2009-09-22 17:22 configure

Причём если надо что-то внутри поправить то это пипец.

true_admin ★★★★★
()
Ответ на: комментарий от Reset

> А еще он не умеет грабить корованы.

Не понял, к чему сарказм? Это не недостаток или что? Можешь еще посмотреть на 2,5К открытых багов в багзилле, выбери себе там по душе.

anonymous
()
Ответ на: комментарий от anonymous

Для меня важнее удобство использования и настоящая кроссплатформенность. С багами не сталкивался, можно подумать в autotools их нет.

Reset ★★★★★
()
Ответ на: комментарий от Reset

> Какой смысл сейчас делать новый проект на этом говне мамонта под названием autotools? Какие плюсы по сравнению с cmake ?

Плюс один -- поддерживаемость практически на любой платформе. Оно просто есть. Оно работает. Разобраться весьма несложно.

При таком же (аналогичном) раскладе меня всегда забавляли бодания "CVS vs. SVN". Если изначально команда SVN разрабатывала что-то лучшее чем CVS, то они по определению ничего _нового_ создать не могли. Ну, пара-тройка улучшений, которые могли бы быть оценены разве что крайне узким кругом специалистов.

Так и хочется вспомнить слова из к/ф "Солдат" -- "Мой папаша был ремонтником, так вот он говаривал что нет нужды чинить то, что и без того работает".

Если с autotools уж совсем тяжко, то тогда для облегчения жизни рекомендовал бы рассмотреть "конструктор", который использует их неявным и прозрачным для пользователя способом.

the_Shadow
()
Ответ на: комментарий от Reset

> С багами не сталкивался, можно подумать в autotools их нет.

Есть. но за годы использования их весьма тщательно замаскировали... =)

the_Shadow
()
Ответ на: комментарий от the_Shadow

Заканчивался 2009ый год... Слоупоки агитировали за autotools && cvs.

> Ну, пара-тройка улучшений, которые могли бы быть оценены разве что крайне узким кругом специалистов.

Прекрасно... Атомарные коммиты, нормальное копирование/перемещение и прочая доступно уму только крайне узкого круга специалистов?

kemm
()
Ответ на: комментарий от the_Shadow

> Разобраться весьма несложно.

вместо одной сущности (cmake) мы имеем туеву хучу всяких непонятных makefile.am, configure.ac, configure.in, config.h .........

> Плюс один -- поддерживаемость практически на любой платформе.

на венде работает? нет? в топку!

> Если с autotools уж совсем тяжко, то тогда для облегчения жизни рекомендовал бы рассмотреть "конструктор", который использует их неявным и прозрачным для пользователя способом.

а нахуа? cmake уже есть и файлы проекта там создаются прозрачным способом без всяких конструкторов

Reset ★★★★★
()
Ответ на: комментарий от kemm

Копирование/перемещение в svn ненормально. А merge и "ветви" это вообще тихий ужас. svn по сравнению с cvs это конечно большой шаг в перед, но рядом с современными системами (mercurial,git) svn и рядом не валялся.

Reset ★★★★★
()
Ответ на: комментарий от Reset

> svn по сравнению с cvs это конечно большой шаг в перед

Я именно про это. И про то, что улучшения в svn никому не заметны, якобы.

> но рядом с современными системами (mercurial,git) svn и рядом не валялся.

Похоже на то, да...

kemm
()
Ответ на: комментарий от Reset

> мы имеем туеву хучу всяких непонятных

Непонятных кому? И в чём? Мне лично понятных.

> на венде работает? нет? в топку!

Вот то, что на вянде работает, в топку сразу. Ибо для вянды есть "решения" от MS. Которые, хвала Аллаху, пусть там и остаются. Проблема в том, что crt виндовый (как минимум) ни кто не отменял. И, к тому же, набор всякого овна, гордо именуемый Win API (если мы о С/С++). Они наиболее физиологичны что ли. Извините за мед. термин. Жена врач, от неё нахватался.

Ежели возжелается "тела белого", то autotools прекрасно работают под cygwin (отчасти и под mingw). Но оба решения по означенной чуть выше причине в топку. Если мы всё-таки об "оптимальном" софте. Если нет и очень хочется портировать механизм epoll() (например) под вянду, то не вопрос. Оно уже портировано в виде libevent. Но как оно работает в реале лучше уж не спрашивайте. Скажу сразу -- через механизмы Win API. Есть там WSASocket(), через него и работает. Со всеми вытекающими.

Как видите, даже такое "жёсткое" портирование возможно (сам по себе механизм epoll() довольно оригинален, вот откуда замечание о "жёсткости" портирования). Но я вослед за Вами задам вопрос -- "а нахуа"?

> а нахуа? cmake уже есть и файлы проекта там создаются прозрачным способом без всяких конструкторов

Для работы с autotools мне хватает vim'а (чаще gvim'а). Что это доказывает? То, что кому-то хватает, а кому-то нет? Да? Ну и Бог бы с ним...

the_Shadow
()
Ответ на: комментарий от Reset

> Копирование/перемещение в svn ненормально. А merge и "ветви" это вообще тихий ужас. svn по сравнению с cvs это конечно большой шаг в перед, но рядом с современными системами (mercurial,git) svn и рядом не валялся.

Если честно, то я вообще-то, то же про тоже. На самом деле, при всей "продвинутости" SVN, радикальных изменений не происходило. С CVS перешёл на git. Полёт нормальный.

Остальные фишеки как-то не возбудили. Уж простите за контрольный плевок в чувствительную душу. Ах, "атомарный коммит", как же без него в CVS обходились? Да вот как-то обходились. Или его нельзя было реализовать в пределах CVS? За столько-то лет??? Или это скорее задача класса "неуловимого Джо", который по большому счёту нах никому не нужен? Ну, да... Ну, есть... Ну приятно. И чё дальше?

the_Shadow
()
Ответ на: комментарий от the_Shadow

> Непонятных кому? И в чём? Мне лично понятных.

Некоторые и в машинных кодах могут сразу программировать, но это не значит, что всем надо также делать.

> Вот то, что на вянде работает, в топку сразу ....

Ты что сказать то хотел? Если никогда не принимал участие в кроссплатформенных проектах, то лучше не пиши ничего, чем пиши эту ахинею.

Reset ★★★★★
()
Ответ на: комментарий от Reset

> Если никогда не принимал участие в кроссплатформенных проектах, то лучше не пиши ничего, чем пиши эту ахинею.

Правда? Ладно. Уговорил... =)

the_Shadow
()
Ответ на: комментарий от Reset

> Некоторые и в машинных кодах могут сразу программировать, но это не значит, что всем надо также делать.

Ясен пень! C# это наше новое фсё! =)))

the_Shadow
()
Ответ на: комментарий от the_Shadow

> Ибо для вянды есть "решения" от MS.

Решения точно так же генерятся с помощью CMake. Например, у нас в конторе билды делаются с помощью nmake, а работаем мы в студии. И мэйкфайлы, и проекты генерятся CMake.

Автору: можно еще посмотреть на готовые проекты типа VTK, ITK итд.

JackyTreehorn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.