SD

Dec. 15th, 2006 04:19 pm
kika: (Default)
[personal profile] kika
Обнаружил оппортюнитю. В мире, оказывается, нету нормальной широко распространенной build system/SCM. Замечательные в своей непостижимости autotools просто непригодны ни на чем кроме юникса, не менее замечательный CMake просто халтурно сделан - у него отличная идея и где-то примерно на треть хороший дизайн, а две трети дизайна и реализация просто мусор. qmake пригоден для использования только в коммерческой версии Qt и кроме того весьма ограничен в возможностях.
Я сильно подозреваю что купив за десять тыщ мильенов фунтов долларов какой-нибудь перфорс я получу такую же помойку, только еще и без исходников.

Либо это никому не надо, либо до сих пор никто не нагнулся и не поднял с земли деньги.

Compliance test для любой билдовой системы: напишите "makefile" в ней, который позволит собрать из одних исходников в один проход статическую и динамическую библиотеку под линукс. А отдельный проход под виндами соберет статическую и динамическую библиотеку под венды. Если тест пройден, сделайте тоже самое, но со сборкой промежуточной convenience library.

Мы в результате остановились на CMake + autotools для того, на что CMake просто непригоден.

Date: 2006-12-15 01:23 pm (UTC)
From: [identity profile] rblaze.livejournal.com
Как можно собрать в один проход статическую и динамическую библиотеки, если одни надо собирать с -fPIC, а другие без?
Если задача "один раз набрать make", то она успешно решена в BSD на обычном make, нет в этом ничего сложного. Сборка под винду будет отличаться не сильно: компиляторы по умолчанию вписать другие да расширения у библиотек.

Смешивать систему сборки и систему управления конфигурациями вообще вредно, у них разные задачи. А причем тут autotools вообще непонятно, у них совершенно другая задача.

Date: 2006-12-15 01:38 pm (UTC)
From: [identity profile] kika.livejournal.com
Я SCM приписал потом, думая что так понятнее будет. Некоторые и GNU Make называют SCM.

Ну а что мне делать если мне надо собрать обе библиотеки? Ну вот надо и все, потом один таргет собирается со статикой, а второй - с .so Ну жизнь такая.

Обычный make всем хорош, кроме того что его надо писать вручную. И когда понадобится (а понадобится) добавить MacOS таргеты, придется написать все опять.
Ну а последний гвоздь в гроб обычного мейка - это невозможность интеграции с MS VS. CMake и qmake это обеспечивают (с кучей непересекающихся оговорок, к сожалению).

Date: 2006-12-15 01:51 pm (UTC)
From: [identity profile] rblaze.livejournal.com
Ну надо так надо :) В FreeBSDшной инфраструктуре это делается простым добавлением строчки "INSTALL_PIC_ARCHIVE=yes" в Makefile, в результате все объектники собираются два раза и на выходе получается .a и .so.
Перенос на другую платформу сведется к изменению имен бинарников и параметров сборки, если там нет каких-то кардинальных отличий типа взятия файлов из SQL вместо FS.

А вот "автомагической" сборки под очередную платформу увы, не достичь. autotools в этом, на мой взгляд, не помогают: всё равно надо напильником затачивать. Дождаться, когда эту работу сделают другие, да еще под все мыслимые платформы, жизни не хватит.

Date: 2006-12-15 02:01 pm (UTC)
From: [identity profile] kika.livejournal.com
autotools решают очень много проблем в плане несовместимостей разных юниксов друг с другом. Напильничком может и надо пройтись, но это не сравнить с выпиливанием этим же напильником из цельной болванки. Другой вопрос что в общем и целом "разных юниксов" уже не осталось. Остался линукс и местами FreeBSD и (отчасти) MacOS/X. Усе. Если мы пишем енд-юзерский софт, то бсдей можно пренебречь, если серверный - то нельзя, ну или по крайней мере нежелательно.
А поддержка мульена экзотических юниксов нужна либо уже очень mature программным продуктам (когда мы сожрали 99% рынка и единственная цель в окошке - добирать по 0.1% каждый год) либо заказному софту.
Поэтому у нас автотулс получается просто генератором мейкфайлов под линукс и все.

Date: 2006-12-16 04:18 am (UTC)
From: [identity profile] evolver.livejournal.com
Поэтому у нас автотулс получается просто генератором мейкфайлов под линукс и все.

У нас примерно так и делается, только для генерации makefiles используется нечто основанное на Imake с кучей собственных расширений. В результате желаемая цель собирать все для всех платформ одним вызовом make достигается успешно. Сборка на нескольких платформах одновременно происходит на build server farm.

Date: 2006-12-16 06:41 pm (UTC)
From: [identity profile] evolver.livejournal.com
А винды у нас нет. Это тот самый случай, когда софт собирается под несколько разных юниксов. Но при имеющейся архитектуре дистрибьютора, можно и винду прикрутить. Надо только запустить нечто, запускающее билд на ней по команде дистрибьютора и форвардящее содержимое консоли обратно на дистрибьютор/контроллер.

Profile

kika: (Default)
kika

January 2017

S M T W T F S
1234567
89 1011121314
151617181920 21
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 17th, 2026 05:11 am
Powered by Dreamwidth Studios