воскресенье, 25 ноября 2007 г.

Bakefile - ваш помощник в компиляции проекта

1.
Есть задача - компилировать проект в консоли Линукса, а потом с минимальными изменениями всё тоже самое скомпилировать в Visual Studio.
С исходными кодами на Си проблем не особо много, препроцессор штука мощная. А вот поддержание в адекватном состоянии make-файлов одновременно с *.vcproj это задача, рутинная, регулярно отнимающая много времени и не доставляющая удовольствия от процесса.
Решение нашлось достаточно быстро. Это Bakefile, кросс-платформенный генератор make -файлов для перекрестной компиляции.

2.
Наиболее простой способ создания make-файлов с использованием Bakefile заключается в использовании так называемых пресетов, которые позволяю описать стандартное поведение make-файлов буквально в двух словах.
Возьмем простой пример, программа, написанная на С и сохранена в файле hello.c
#include <stdio.h>
int main()
{
printf("Киса куку!\n");
return 0;
}
Чтобы нам это скомпилировать, напишем небольшой файл hello.bkl (строки пронумерованы для того, чтобы потом на них ссылаться)
1 <?xml version="1.0"?>
2 <makefile>
3 <include file="presets/simple.bkl"/>
4 <exe id="hello" template="simple">
5 <sources>hello.c</sources>
6 </exe>
7 </makefile>
Формат файла в стиле xml. В строке 3 подключаем пресет. В строке 4 говорим что нас интересует исполняемый файл. В строке 5 объясняем где взять исходник. Всё!
Просто, не правда ли?

3.
Создаем make-файлы.

$ bakefile -f msvc hello.bkl

Так мы получим makefile.vc для nmake

$ bakefile -f gnu hello.bkl

А так для GNU Make

$ bakefile -f msvs2005prj hello.bkl

Вот таким не хитрым способом получаем файл проекта для VS2005

Bakefile версии 0.2.2 позволяет создать make-файлы для 14-ти средств компиляции, используемых на различных платформах.
Bakefile активно развивается и используется во многих проектах.

Кто это использует: http://www.bakefile.org/wiki/BakefileUsers
Домашняя страница проекта: http://www.bakefile.org

среда, 14 ноября 2007 г.

gtkVdonskTel-0.01

Телефонный справочник Волгодонска под Linux версия 0.01
Требуется наличие библиотеки Gtk и Gtkmm.
В папке bin лежит исполняемый файл который собран статически с некоторыми другими библиотеками.
Работает как минимум в Ubuntu 7.04 и Fedore Core 7

Страница проекта: http://code.google.com/p/gtkvdonsktel/