The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Есть ли под UNIX что-то похожее на MS Visual Studio ?"
Отправлено elvenic, 16-Июл-07 18:55 
>>А так, зачем мне может понадобится список всех возможных функций?
>
>Для проверки на совместимость, правда я тут уже задумался, может automake умеет
>проверять сам... ?

Ну, сам automake/autoconf (точнее, этим занимается имменно autoconf) не очень много умеет - autoconf дает возможность (относительно :) ) легко написать макрос который проверит есть ли данная библиотека в системе на которой вы компилируете программу, есть ли в этой библиотеке данная функция - короче, при конфигурировании компиляции (это когда запускается скрипт ./configure перед запуском make) будет сделана попытка скомпилировать маленькую программу которая пытается слинковать указанную библиотеку и вызвать указанную функцию, если при компиляции/линковке произошли ошибки, значит библиотеки или функции нет в системе.

Кроме того, autoconf дает возможность построить хеадер файл config.h с #define'ами для каждой таким образом проверенной библиотеки/функции (типа, если ./configure определил что в системе есть накая feature, то там присутствует #define HAVE_<feature_name>, если нет - то нет #define'а).

Более того, вся эта бодягя с autoconf изначально была придумана, как я понимаю, именно для конфигурирования компиляции программ из одного исходного текста (source tree) на разных системах где похожие библиотеки, дающие похожую функциональность, немного по разному линкуются, лежат в разных каталогах, требуют разных опций компилятора, и т.д. - типа поставка исходников содержит скрипт ./configure которий обследует систему и строит Makefile (или дерево Makefile'ов) конкретно для этой системы, с командами вызова компилятора с подключением библиотек которые есть в этой системе, с правильными опциями компилятора/линкера. Или ./configure говорит что какой-то библиотеки не может найти и программа на этой системе не может быть построена без указания где эта библиотека лежит.

Ну, в общем, с точки зрения портабельных программ которые должны компилироваться на разных Unix'ах, не имеет смысла проверять наличие библиотеки/функции путем поиска установленной документации к этой функции на системе где эта программа разрабатывается. 'The Right Way' тут иметь ./configure скрипт который это сделает автоматически (и скорректирует Makefile'ы , если надо) прямо на системе где программа будет строится. А automake/autoconf - это тулзы которые облегчают построение такого ./config скрипта и, в случае automake, заготовок для Makefile'ов (файлы Mаkefile.am) с построенными зависимостями .c/.cpp файлов от нужных .h/.hpp файлов.

Да, процесс написания configure.in (или configure.ac) - исходного файла для autoconf - может казаться устаршающе сложным. Но по интернету можно найти много уже готовых макросов для autoconf для проверки разных features - например, когда мне надо было компилировать программу с pthreads на Линуксе, ФриБСД и Солярисе, я нашел макрос для autoconf который делает все необходимые преверки и подключает нужные библиотеки с нужными опциями компилятора на всех этих системах (и еще на нескольких других заодно).


 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру