Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как создать makefile 
V
    Опции темы
americanets
Дата 20.11.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: нет
Всего: 12



как создать makefile, руками компилю так

Код

 g++ test.cpp -c
 g++ test2.cpp -c
 g++ test.o test2.o -o test -I/usr/include/mysql -I/usr/include/mysql++ -lmysqlpp -L/usr/lib/mysql -L/usr/local/lib/mysql++  -Icurl/include -lboost_regex `curl-config --libs` -lstdc++ 



но это не удобно , особенно когда файлов становиться больше

Как написать такой makefile , а то что - то не пойму как они пишутся 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
bsa
Дата 20.11.2008, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Ты уверен, что тебе именно это надо? может стоит обратить внимание на automake? Он тебе и configure создаст

PM   Вверх
IceSunrise
Дата 20.11.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.4.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 3



americanets,  думаю эта небольшая статья вам сильно поможет
Эффективное использование GNU Make
PM MAIL   Вверх
sentry
Дата 20.11.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Code Monkey
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.1.2007
Где: Москва

Репутация: нет
Всего: 10



А может, стоит попробовать CMake?
PM MAIL   Вверх
americanets
Дата 21.11.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: нет
Всего: 12



IceSunrise, спасибо, читаю , как сделаю напишу что получилось, может что подскажете еще



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 21.11.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: нет
Всего: 12



IceSunrise

что - то не так


Код

link_flags   := -I/usr/include/mysql -I/usr/include/mysql++ -lmysqlpp -L/usr/lib/mysql -L/usr/local/lib/mysql++  -Icurl/include -lboost_regex `curl-config --libs` -lstdc++

testmake: main.o main2.o
        g++ main.o main2.o -o testmake

main.o: main.cpp
        g++ -c test.cpp

main2.o: main.cpp
        g++ -c test2.cpp
clean:
        rm *.o


выдает 


Код

 make
Makefile:4: *** пропущен разделитель (не имели ли вы в виду TAB вместо восьми пробелов?).  Останов.



но там не таб ,а  пробелы


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 21.11.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: нет
Всего: 12



как раз таб и нужен smile 

но теперь пишет

Код

make: *** Нет правила для сборки цели `main.cpp', требуемой для `main.o'.  Останов.




--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 21.11.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: нет
Всего: 12



тоже разобрался, но не подключает link_flags 


Код

link_flags   := -I/usr/include/mysql -I/usr/include/mysql++ -lmysqlpp -L/usr/lib/mysql -L/usr/local/lib/mysql++  -Icurl/include -lboost_regex `curl-config --libs` -lstdc++

testmake: main.o
    g++ main.o -o $(link_flags) testparser

test.o: main.cpp
    g++ -c $(link_flags) main.cpp

clean:
    rm *.o




Код

make
g++    -c -o main.o main.cpp
In file included from /usr/include/mysql++/connection.h:38,
                 from /usr/include/mysql++/mysql++.h:56,
                 from main.cpp:5:
/usr/include/mysql++/common.h:124:28: error: mysql_version.h: No such file or directory
/usr/include/mysql++/common.h:182:20: error: mysql.h: No such file or directory
In file included from /usr/include/mysql++/sql_buffer.h:32,
                 from /usr/include/mysql++/stadapter.h:35,
                 from /usr/include/mysql++/qparms.h:35,
                 from /usr/include/mysql++/query.h:34,
                 from /usr/include/mysql++/mysql++.h:58,
                 from main.cpp:5:
/usr/include/mysql++/type_info.h:77: ошибка: expected ‘,’ or ‘...’ before ‘bt’
/usr/include/mysql++/type_info.h:92: ошибка: ‘enum_field_types’ не является именем типа
/usr/include/mysql++/type_info.h: In constructor ‘mysqlpp::mysql_ti_sql_type_info::mysql_ti_sql_type_info()’:
/usr/include/mysql++/type_info.h:71: ошибка: в классе ‘mysqlpp::mysql_ti_sql_type_info’ не имеет поля с именем ‘base_type_’
/usr/include/mysql++/type_info.h:71: ошибка: нет декларации ‘MYSQL_TYPE_NULL’ в этой области видимости
/usr/include/mysql++/type_info.h: In constructor ‘mysqlpp::mysql_ti_sql_type_info::mysql_ti_sql_type_info(const char*, const std::type_info&, int)’:
/usr/include/mysql++/type_info.h:81: ошибка: в классе ‘mysqlpp::mysql_ti_sql_type_info’ не имеет поля с именем ‘base_type_’
/usr/include/mysql++/type_info.h:81: ошибка: нет декларации ‘bt’ в этой области видимости
/usr/include/mysql++/type_info.h:82: ошибка: нет декларации ‘flags’ в этой области видимости
/usr/include/mysql++/type_info.h: At global scope:
/usr/include/mysql++/type_info.h:162: ошибка: expected `)' before ‘t’
/usr/include/mysql++/type_info.h:264: ошибка: ‘enum_field_types’ не является именем типа
/usr/include/mysql++/type_info.h:293: ош


Это сообщение отредактировал(а) americanets - 21.11.2008, 12:17


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
xvr
Дата 21.11.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(americanets @ 21.11.2008,  12:15)
тоже разобрался, но не подключает link_flags 


Код

link_flags   := -I/usr/include/mysql -I/usr/include/mysql++ -lmysqlpp -L/usr/lib/mysql -L/usr/local/lib/mysql++  -Icurl/include -lboost_regex `curl-config --libs` -lstdc++

testmake: main.o
    g++ main.o -o $(link_flags) testparser

test.o: main.cpp
    g++ -c $(link_flags) main.cpp

clean:
    rm *.o




Код

make
g++    -c -o main.o main.cpp
In file included from /usr/include/mysql++/connection.h:38,
                 from /usr/include/mysql++/mysql++.h:56,
                 from main.cpp:5:
/usr/include/mysql++/common.h:124:28: error: mysql_version.h: No such file or directory
/usr/include/mysql++/common.h:182:20: error: mysql.h: No such file or directory
In file included from /usr/include/mysql++/sql_buffer.h:32,
                 from /usr/include/mysql++/stadapter.h:35,
                 from /usr/include/mysql++/qparms.h:35,
                 from /usr/include/mysql++/query.h:34,
                 from /usr/include/mysql++/mysql++.h:58,
                 from main.cpp:5:
/usr/include/mysql++/type_info.h:77: ошибка: expected ‘,’ or ‘...’ before ‘bt’
/usr/include/mysql++/type_info.h:92: ошибка: ‘enum_field_types’ не является именем типа
/usr/include/mysql++/type_info.h: In constructor ‘mysqlpp::mysql_ti_sql_type_info::mysql_ti_sql_type_info()’:
/usr/include/mysql++/type_info.h:71: ошибка: в классе ‘mysqlpp::mysql_ti_sql_type_info’ не имеет поля с именем ‘base_type_’
/usr/include/mysql++/type_info.h:71: ошибка: нет декларации ‘MYSQL_TYPE_NULL’ в этой области видимости
/usr/include/mysql++/type_info.h: In constructor ‘mysqlpp::mysql_ti_sql_type_info::mysql_ti_sql_type_info(const char*, const std::type_info&, int)’:
/usr/include/mysql++/type_info.h:81: ошибка: в классе ‘mysqlpp::mysql_ti_sql_type_info’ не имеет поля с именем ‘base_type_’
/usr/include/mysql++/type_info.h:81: ошибка: нет декларации ‘bt’ в этой области видимости
/usr/include/mysql++/type_info.h:82: ошибка: нет декларации ‘flags’ в этой области видимости
/usr/include/mysql++/type_info.h: At global scope:
/usr/include/mysql++/type_info.h:162: ошибка: expected `)' before ‘t’
/usr/include/mysql++/type_info.h:264: ошибка: ‘enum_field_types’ не является именем типа
/usr/include/mysql++/type_info.h:293: ош

Подключается link_flags, иначе у тебя вообще никаких бы include'ов не нашлось. Папка /usr/include/mysql есть? В ней что нибудь лежит?

Кстати, вот это
Код

test.o: main.cpp
    g++ -c $(link_flags) main.cpp
неправильно, должно быть
Код

main.o: main.cpp
    g++ -c $(link_flags) main.cpp

PM MAIL   Вверх
americanets
Дата 21.11.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: нет
Всего: 12



xvr, точно, спасибо, так работает


Код

link_flags:= -I/usr/include/mysql -I/usr/include/mysql++ -lmysqlpp -L/usr/lib/mysql -L/usr/local/lib/mysql++  -Icurl/include -lboost_regex `curl-config --libs` -lstdc++

testmake: main.o
    g++ main.o -o testparser $(link_flags)

main.o: main.cpp
    g++ -c main.cpp $(link_flags)

clean:
    rm *.o


только почему - то main.o не удалило


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
xvr
Дата 21.11.2008, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(americanets @ 21.11.2008,  14:29)
xvr, точно, спасибо, так работает


Код

link_flags:= -I/usr/include/mysql -I/usr/include/mysql++ -lmysqlpp -L/usr/lib/mysql -L/usr/local/lib/mysql++  -Icurl/include -lboost_regex `curl-config --libs` -lstdc++

testmake: main.o
    g++ main.o -o testparser $(link_flags)

main.o: main.cpp
    g++ -c main.cpp $(link_flags)

clean:
    rm *.o


только почему - то main.o не удалило

И не должно, напиши make clean - удалит
Кстати, еще одна ошибка:
не
Код

testmake: main.o
    g++ main.o -o testparser $(link_flags)
а
Код

testparser: main.o
    g++ main.o -o testparser $(link_flags)


Это сообщение отредактировал(а) xvr - 21.11.2008, 16:43
PM MAIL   Вверх
americanets
Дата 21.11.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: нет
Всего: 12



xvr, спасибо


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
inside_pointer
Дата 24.11.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: нет
Всего: 12



пример

Код

 
CC     =  cc
LIB    = -lm
SRC    = main.c
OBJECT = main.o
TARGET = sin

help info:
    @echo "Usage: make { install | clean | help, info }";

install:
    @$(CC) -c $(SRC) -o $(OBJECT);
    @$(CC) $(LIB) $(OBJECT) -o $(TARGET);
    @echo "Usage: ./$(TARGET)";
    
clean:
    @rm -f $(OBJECT) $(TARGET);
    @echo "\"$(TARGET)\" remove...";


быстро удобно один раз написал, потом легко переделывать прогу
PM MAIL   Вверх
americanets
Дата 24.11.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: нет
Всего: 12



inside_pointer, спасибо . разбираюсь по тихоньку ,


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0930 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.