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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> include в Makefile, Как сократить запись целей для хидеров 
:(
    Опции темы
georain
Дата 28.1.2008, 04:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Подскажите, как в Makefile (для GNU make) записывать цели в дерикториях,
например есть:

main.o: main.cpp headA.h headB.h
                 g++ -c main.cpp

Теперь я хочу чтобы headA.h и headB.h лежали в ./include/
Как мне написать?

И можно ли чтобы заголовочные файлы автоматически в ./include искались?

Извините не нашёл нигде.


PM MAIL   Вверх
georain
Дата 28.1.2008, 05:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



У меня тут ещё вопрос возник, а что если у меня заголовочный файл сам зависит от другого заголовочного файла (headC.h)?

Это сообщение отредактировал(а) georain - 28.1.2008, 05:42
PM MAIL   Вверх
archimed7592
Дата 28.1.2008, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Разве make не умеет разруливать зависимость от заголовочных файлов сам? Если нет, то точно есть штуковина, делающая это автоматически(то ли g++ --bla-bla-bla ... , то ли сам make нужно с какими-то параметрами запустить).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
georain
Дата 28.1.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Было бы очень хорошо, если так.
Мне в принципе это и нужно.

Это сообщение отредактировал(а) georain - 28.1.2008, 09:12
PM MAIL   Вверх
Mayk
Дата 28.1.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

Репутация: 5
Всего: 134



Цитата(archimed7592 @  28.1.2008,  12:53 Найти цитируемый пост)
Если нет, то точно есть штуковина, делающая это автоматически(то ли g++ --bla-bla-bla ... , то ли сам make нужно с какими-то параметрами запустить).

есть даже несколько штуковин. во-первых да, сам gcc [не помню правда параметры, -MQ что ли?], во-вторых есть такие штуки как makedep или makedepend. правда не знаю делают ли они работу сами, либо используют gcc.
Цитата(georain @  28.1.2008,  13:11 Найти цитируемый пост)
Мне в принципе это и нужно.

rtfm тогда. гсс это точно делать умеет. 


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
archimed7592
Дата 28.1.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



georain, у сейчас нет времени проверять, но сделать это очень просто.
Что-то вроде Makefile'а
a.o : a.cpp
b.o : b.cpp
p.exe : a.o b.o
Создаёшь a.cpp, b.cpp, a.h, b.h, ab.h.
В a.cpp инклудишь a.h и ab.h.
В b.cpp - b.h и ab.h.
Делаешь make p.exe.
Изменяешь a.h - должен должна произойти перекомпиляция только a.o и p.exe.
Изменяешь ab.h - должна произойти перекомпиляция обойх модулей.
Если так, то make сам умеет разруливать зависимость от хидэров.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 28.1.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(archimed7592 @  28.1.2008,  11:20 Найти цитируемый пост)
Если так, то make сам умеет разруливать зависимость от хидэров.

нет, не умеет smile надо подставлять с помощью include, или скриптом, или другим мэйкфайлом файлик, сгенеренный gcc.

Цитата(Mayk @  28.1.2008,  08:58 Найти цитируемый пост)
не помню правда параметры, -MQ что ли?

-MM, -M, -MF


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
georain
Дата 29.1.2008, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как подставлять с помощью include, или скриптом, или другим мэйкфайлом файлик, сгенеренный gcc?
Или где литературу найти?

Я раньше проект весь целиком компилил, когда кода ещё не много было, а сейчас уже заметно стало.
PM MAIL   Вверх
warmonger_
Дата 29.1.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(georain @  29.1.2008,  11:15 Найти цитируемый пост)
Или где литературу найти?

http://www.gnu.org/software/make/manual/make.html
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
Mayk
Дата 29.1.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

Репутация: 5
Всего: 134



Пример использвоания утилиты gccmakedep[не знаю где брал].

код до запуска make dep
Код

OFILES=snd_linux.o
CFLAGS=-ggdb -pg -g -I$(HOME)/bin/include
..скучно..
dep:; gccmakedep -- $(CFLAGS) -- *.cpp
..скучно..


код после make dep
Код

OFILES=snd_linux.o
CFLAGS=-ggdb -pg -g -I$(HOME)/bin/include
..скучно..
dep:; gccmakedep -- $(CFLAGS) -- *.cpp
..скучно..
# DO NOT DELETE
snd_linux.o: snd_linux.cpp /usr/include/SDL/SDL.h \
  /usr/include/SDL/SDL_main.h /usr/include/SDL/SDL_stdinc.h \
  /usr/include/SDL/SDL_config.h /usr/include/SDL/SDL_platform.h \
..скучно..



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

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

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


 




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


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

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