LINUX.ORG.RU

Чем лучше всего собирать Pure C проекты?

 , ,


1

7

Всегда собирал с помощью своего build.sh,но когда мне понадобилось скомпилировать один из моих проектов под винду,ну вы поняли.Почитал сейчас про make.В комментариях везде пишут make это ужас,учи cmake,scons,etc.Так чем лучше всего собирать? (IDE не люблю)



Последнее исправление: linuhs_user (всего исправлений: 1)

cmake, premake5

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

Да я только недавно мечтал о cargo-c,но у раста библиотек нет нужных мне.Например старого OpenGL где все делается в 2 строчки.Пробовал новый на расте,но не осилил поворот камеры даже.

linuhs_user
() автор топика

Почитал сейчас про make.В комментариях везде пишут make это ужас,учи cmake,scons,etc.

make
Вот пример прекрасного Makefile. Так что не слушай кукарек.
https://github.com/orangeduck/Corange/blob/master/Makefile

meson
Ещё можно попробовать meson + ninja
Пример meson.build
https://github.com/vinszent/gnome-twitch/blob/master/meson.build
Короткие примеры
http://mesonbuild.com/Meson-sample.html

Если твои проекты малы или средние хватит и обычного Makefile и ничего в нём плохого нет, а кричат и бубнят те кто возиться с большими проектами и разными платформами.

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

Если твои проекты малы или средние хватит и обычного Makefile

А что для крупных используют?Cmake?

Я кстати смотрел Makefile из corange)

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

Corange сам по себе эпик код, мне очень интересно ковырять было его исходники. Для крупных, да что угодно chromium использует ninja :D firefox autotools. Да без разницы, Хоть голый Макеfile, всё зависит от того что удобнее сопровождать и всё. Это же просто система сборки, на вкус/цвет фломастеры разные. А почему те или иные проекты собирают код тем или иным это надо у них спрашивать, наверное у многих ответственный за сборку просто почесав левую пятку решил юзать то что лучше знает.

P.S. но ты меня не слушай, я вобще не программист :D

Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от Dron

Corange сам по себе эпик код

Жалко забросили( Я как то года 2 назад хотел на нем игру сделать,но С не знал и ловил на каждой строчке segfault))

linuhs_user
() автор топика

конечно же autoconf и automake

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

chromium использует ninja

Там GN, который генерирует build-файлы для Ninja. Ещё он умеет генерировать sln-файлы для Visual Studio.

firefox autotools

Разве? У них своя система сборки. Особого названия нет, называют просто the Mozilla build system.

i-rinat ★★★★★
()
Ответ на: комментарий от Dron

Я очень удивлен,думал эту демку на каком нибудь Unreal сделали.Раз уж ты смотрел исходники,подскажешь в каком состоянии там физика и сеть?

linuhs_user
() автор топика
Ответ на: комментарий от i-rinat

Там GN, который генерирует build-файлы для Ninja.

Незнай, я когда смотрел инструкцию по сборке (давно) там просто, типа клонируй, сделай то-то то-то то-то и ninja -build чегототам. Ну видать я не заметил ничего про GN

Разве? У них своя система сборки. Особого названия нет, называют просто the Mozilla build system.

Ойй, да, тут ты полностью прав, я чёта эта. Спиз**л слегка ::)

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

Сеть через SDL_net. Физика, только обнаружение столкновений, но я толком и не понял как ею пользоваться. И забил в итоге )

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

Сеть через SDL_net

Это значит что вместо SDLNet_UDP_Open() Corange_UPD_Open()?И так далее

Физика, только обнаружение столкновений

А большего мне и не надо)

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

Это значит что вместо SDLNet_UDP_Open() Corange_UPD_Open()?И так далее

Та неее, там вот :D

#ifndef cnet_h
#define cnet_h

#include "cengine.h"

void net_init(void);
void net_finish(void);

void net_set_server(bool server);
bool net_is_server(void);
bool net_is_client(void);

enum {
  HTTP_ERR_NONE   = 0,
  HTTP_ERR_URL    = 1,
  HTTP_ERR_HOST   = 2,
  HTTP_ERR_SOCKET = 3,
  HTTP_ERR_DATA   = 4,
  HTTP_ERR_NOFILE = 5,
};

int net_http_get(char* out, int max, char* fmt, ...);
int net_http_upload(const char* filename, char* fmt, ...);

#endif

А большего мне и не надо)

Разберёшься с ней отпиши :D

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

Мне бы сначала с его компилирование разобраться))make не хочет компилировать,пишет что есть несколько варнингов,я убрал -Werror но теперь некоторые демки запускаться не хотят.Но кораблик работает,а там физика)

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

Некоторые демки специфичны и требуют opencl, вот и не запускаются.

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

Ты спроси на гитхабе сам если что не понятно. Даниель ответит.

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

Да ладно тебе,это как: «человек не стреляет,стреляет пистолет»

linuhs_user
() автор топика
Ответ на: комментарий от pftBest

Совет был на уровне

- Подскажите, как писать - «на Украине» или «в Украине»?

- Учи немецкий!

А уж если буду писать на C и нужно будет компилировать код, то это уж точно не будет причиной менять язык написания. А модули ещё в турбо паскале были. Пиши на нём. Норм же логика?

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

Даже больше скажу - rust, судя по всему, это что-то из разряда религии. Раз его пихают везде и всюду в стиле Лёньки с systemd или тов. Карпова с вечным ПМС.

dzidzitop ★★
()
Ответ на: комментарий от i-rinat

У них своя система сборки. Особого названия нет, называют просто the Mozilla build system.

Разве? Они вроде как называют её Mach:

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instru...

Хотя системой сборки они её не считают:

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/mach#Is_mach...

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

о как тебя провало, на два поста даже. Не надо так нервничать, сходи валерьяночки выпей что ли

А по теме, конечно раст тут не к месту, но мой ответ был про сравнение пепельниц, а не про «менять язык написания»

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

В лучшие годы я за день мог 50 коммитов сделать. Это меня тоже колбасило от нервного перенапряжения?

А по теме - ninja вполне себе работает. Не в курсе какая портабельность, но единожды написанный скрипт можно легко копипастить на новые проекты не сильно перелистывая маны. Но синтаксис там не очень, в лучших традициях убогого стиля make.

dzidzitop ★★
()

раз тебе хватало баш скриптов под линем, то под виндами должно хватить местных скриптов-батников.

Pro100User
()

Cmake хорош тем что работает на многих системах, но плох инопланетным синтаксисом и стандартными названиями переменных.
Например то что делается в make и autotools как CC=«gcc -m32» в cmake будет так:

-DCMAKE_C_YOUR_MOTHER_FLAGS=-m32 -DCMAKE_C_YOUR_FATHER_FLAGS=-m32 -DCMAKE_CXX_YOUR_SISTER_FLAGS=-m32 -DCMAKE_CXX_YOUR_LITTLE_BROTHER_FLAGS=-m32 -DCMAKE_JAVA,_YOUR_GRANDPA_FLAGS=-m32
Make и autotools приведёт к необходимости держать отдельный проект для visual studio, если он поддерживается, зато не имеет проблем на posix системах

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)

Если не мультиплатформа и прожект простой, то make самое оно. В противном случае cmake или scons.

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

Например старого OpenGL где все делается в 2 строчки.

Всё правильно. Такие как ты должны страдать. Не пользователи такого софта (который при использовании glBegin и прочей некрофилии неизбежно будет жутко тормозить на любом железе), а писаки, неспособные осилить даже чёртов, мать его, VAO.

Пробовал новый на расте, но не осилил поворот камеры даже.

Марш учить линейную алгебру, аналитическую геометрию и компьютерную графику!

robus ★★★★★
()
Ответ на: комментарий от i-rinat

gn уже научили генерировать sln файлы? Вроде, говорили что поддержка других проектных файлов, помимо ninja у них далеко не в приоритете.

gn вообще довольно стремная штука. По факту, он является простым интерпретатором некого специализированного языка. И по своей сути мало что знает о разных компиляторах, их флагах и всем прочем. Вся эта информация хранится в тоннах скриптов, располагающихся непосредственно в репозитория хромиума. Т.е. если захочешь сделать свой проект с ng, то придется либо выковырять гигантский шмат кода из хромиума, либо написать все эти скрипты самостоятельно, что эквивалентно по сложности с разработкой собственной системы сборки.

Хромиум сейчас частично собирается старым gyp, частично новым ng. При этом, что будут делать проекты, которые стоят несколько в стороне от основной ветки непонятно (ладно, V8, ещё можно перевести на ng, а вот что будет делать, например, nodejs, которой по идее нужно уметь собирать тот же V8? Тащить с собой скрипты для ng из хромиума?)

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

Deleted
()

Чем лучше всего собирать Pure C проекты?

GNU Make.

Deleted
()

В последнее время гном переходит на meson. Может стоит на него посмотреть?

Im_not_a_robot ★★★★★
()

Использую cmake - гадость ещё та, но выбора особого нет, т.к. он умеет генерить файлы сборки для всех популярных систем сборки.

Norgat ★★★★★
()

и чем make ужас? осиль и будет счастье

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

+1 за meson, использовал его для небольшого проекта. 30ти минут хватило, чтобы разобраться как создать многомодульный билд с зависимостями.

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

Mach

Mach это утилита, она там ещё и репозиторий настраивает, и ещё много всякого делает.

Ну и не называть же систему сборки «configure» только потому, что там лежит скрипт «configure»?

i-rinat ★★★★★
()

make, если маленький проектик и зависимостей почти нет. Иначе — cmake.

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

У CMake много модулей.

У CMake поддержка кучи компиляторов.

CMake может сгенерить проектники под множество IDE.

Я не знаю, есть ли такое у других, но именно это заставляет меня выбирать CMake снова и снова.

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