Поиск:

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


Шустрый
*


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

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



как пользоваться makefile для компановки нескольких файлов 
PM MAIL   Вверх
comcon1
Дата 17.4.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Синтаксиз таков:

Маке-файл состоит из целей, которые обозначаются так.
Код

<имя цели>:  <файлы или подцели, изменение которых ведет к пересборке цели>
<табуляция!> <команда для сборки>\
 <продолжение команды для сборки>


Простой пример:
Код

# по умолчанию выполняется цель 'all'
# в данном случае для пересборки цели необходима сборка подцелей 
# object1.o и object2.o
all: object1.o object2.o
          g++ -o result object1.o object2.o

# вот описание подцелей
# эта подцель будет пересобрана при изменении хотябы одного из 
# файлов object1.cpp или object1.hpp
object1.o: object1.cpp object1.hpp
         g++ -c object1.cpp

object2: object2.cpp object2.hpp
         g++ -c object2.cpp



Вот более сложный пример.
Код

# Project: rotator_dev
# Makefile created by Dev-C++ 4.9.9.2
# and adopted to *NIX by comcon1


#
# CHECK IF YOUR BOOST LIBRARIES SUITE
# -----------------------------------
# внешнии библиотеки
LIBS =  -lboost_program_options-gcc -lboost_regex-gcc
# -----------------------------------
# DO NOT MODIFY THE REST BLOCK! 
#  

# команда компилятора
CPP  = g++
# список объектных файлов
OBJ  = objects/rotator.o objects/config_inp.o objects/global_bits.o objects/pdbi.o objects/rotate_bits.o objects/penergy.o $(RES)
# опции компилятора
CXXINCS = -Iinclude
# название выходного exe-файла
BIN  = bin/rotator
CXXFLAGS = $(CXXINCS) -O2 -Wall -Dwin32
# команда стирания
RM = rm -f
# команда линкера
LD = g++
# опции линкера
LDFLAGS = $(LDFLAGS)

all:  $(BIN)

clean: clean-custom
    ${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
    $(LD) $(OBJ) -o $(BIN) $(LIBS) $(LDFLAGS)

objects/rotator.o: rotator.cpp
    $(CPP) -c rotator.cpp -o objects/rotator.o $(CXXFLAGS)

objects/config_inp.o: config_inp.cpp
    $(CPP) -c config_inp.cpp -o objects/config_inp.o $(CXXFLAGS)

objects/global_bits.o: global_bits.cpp
    $(CPP) -c global_bits.cpp -o objects/global_bits.o $(CXXFLAGS)

objects/pdbi.o: pdbi.cpp
    $(CPP) -c pdbi.cpp -o objects/pdbi.o $(CXXFLAGS)

objects/rotate_bits.o: rotate_bits.cpp
    $(CPP) -c rotate_bits.cpp -o objects/rotate_bits.o $(CXXFLAGS)

objects/penergy.o: penergy.cpp
    $(CPP) -c penergy.cpp -o objects/penergy.o $(CXXFLAGS)

   

Это сообщение отредактировал(а) comcon1 - 19.4.2006, 15:34


--------------------
PM MAIL   Вверх
f999t1
Дата 18.4.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



твой пример надо писать в отдельно файле (какое должно быть расширение)

и что если один файл на C другой на asembler  

Это сообщение отредактировал(а) f999t1 - 18.4.2006, 13:41
PM MAIL   Вверх
comcon1
Дата 19.4.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Создаешь это в файле, называемом Makefile.
Тогда команда:
Код

 make

Будет лезть в него. Если он назван по другому, то запуск сборки, к примеру:
Код

 make -f Makefile.win


А сборка с асм:
Код

# по умолчанию выполняется цель 'all'
# в данном случае для пересборки цели необходима сборка подцелей 
# object1.o и object2.o
all: object1.o object2.o
          g++ -o result object1.o object2.o

# вот описание подцелей
# эта подцель будет пересобрана при изменении хотябы одного из 
# файлов object1.cpp или object1.hpp
object1.o: object1.cpp object1.hpp
         g++ -c object1.cpp

# не знаю, какой там синтаксиз :(, не компилил в POSIX ассемблере
# ну например:
object2: object2.asm
         tasm object2.asm


 


--------------------
PM MAIL   Вверх
f999t1
Дата 19.4.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В принципе разобрался. 
у меня получился работающий makfile


Код

all.out: main.o f13.o f23.o
    gcc -o all.out main.o f13.o f23.o
main.o: main.c f13.h f23.h
    gcc -o main.o -c main.c 
f13.o: f13.c f13.h
    gcc -o f13.o -c f13.c
f23.o: f23.c f23.h
    gcc -o f23.o -c f23.c





но как еге переделать с использованием переменных
типа OBJ=main.o f13.o f23.o
и  $, @ и т.п (не пойму как ими пользоваться)  

Это сообщение отредактировал(а) f999t1 - 19.4.2006, 16:45
PM MAIL   Вверх
comcon1
Дата 19.4.2006, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Наверно, правильнее всего так:

Код

OBJ = main.o f13.o f23.o
BIN = all.out

all: $(BIN)

$(BIN): $(OBJ)
    gcc -o $(BIN) $(OBJ)

clean:
    rm -f $(BIN) $(OBJ)



main.o: main.c f13.h f23.h
    gcc -o main.o -c main.c 
f13.o: f13.c f13.h
    gcc -o f13.o -c f13.c
f23.o: f23.c f23.h
    gcc -o f23.o -c f23.c

 


--------------------
PM MAIL   Вверх
jonie
Дата 19.4.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



какие "автосоздатели" make файлов вы предпочитаете ? А-то самому ручками писать уж больно долго.....
желательно создание как под win так и под nix компиляторы....   

Это сообщение отредактировал(а) jonie - 20.4.2006, 00:00


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
comcon1
Дата 20.4.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



see autobook. (aclocal, autoconf, automake, libtool)
win: Dev-Cpp, minGw development studio 


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




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


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

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