создание Makefile-ов

okunek

Есть код на с++ изначально написанный в visual studio.
Теперь возникла потребность весь этот код править и дописывать под линухом.
Всего файлов ~30 .cpp и ~30 .h и самому руками makefile писать - мне кажется, ебануться можно, т.к. на каждый .cpp файл в среднем приходится дохрена .h файлов и каждые еще че-нить инклюдят вдобавок. Есть какие-нибудь средства, которые сами makefile смогут сделать? Про че вообще читать, а то у меня опыта в линуксе прогать - на уровне "g++ proga.cpp"?

disna

automake

Dasar

Сколько времени занимает полная перекомпиляция?

okunek

читал man automake, долго втыкал... ладно, пойду дальше втыкать
меня просто смутили всякие makefile.am, makefile.in и прочее...

okunek

на P4 3200Ghz, 1.5Gb - минуты три (2005-я студия)
щас просто машина в наличии с памятью в 6 раз меньше и проц хуже

Dasar

тогда, да - стоит make потюнить.

vall

ftp://communique.hackers/doc/cher/c/makefile.pdf
зависимости с хедерниками можно автоматически генерировать.

qsk78

Попробуй почитать autobook, полезная книжка. Где-то в интернете лежала в открытом доступе.

okunek

Спасибо, нашол, пойду читать.

okunek

Сетки нету, а makefile.pdf не гуглится

qsk78

Я думаю, что этот файл можно скачать с http://unicorn.cmc.msu.ru
Только не знаю, к какому семестру это относится. Наверное к третьему.

ppplva

automake
Гадость.
Все что нужно автору - автоматическая генерация зависимостей.
Это делается командой
gcc -M  

Стоит посмотреть в других проектах как это правильно оформить.

okunek

нда, высрал Makefile на 200кб
правда у меня и буст и стл юзаются и он все заголовочные файлы пересчитал
но это именно то, что мне пока нужно.
всем спасибо

okunek

а, ну для этого есть -MM

vall

ну обычно то что он высирает инклудят в makefile а не makefile лепят на его основе.

vall

в общем что-то типа этого тебе нужно.
вроде работать должно, но не проверял
SRCS=$(wildcard *.cpp)
OBJS=$(SRCS:.cpp=.o)
CFLAGS=-g -Wall

all: prg

.cpp.o:
$(CXX) -c $(CXXFLAGS) -o $@ $<

prg: $(OBJS)
$(CXX) -o $@ $^ $(LDFLAGS)

clean:
$(RM) *.o

dep:
$(CXX) -MM ${CFLAGS} $(SRCS) 1> .dep

.dep: dep

include .dep

okunek

я сделал куда банальнее:
g++ -MM *кучафайлов* > Makefile
make

vall

неее, это не спортивно =)

shlyumper

а использовать что-либо типа cmake религия позволит?

okunek

позволит
почитаю как-нибудь

qsk78

А есть какой-нибудь конвертер из Visual Studio проектов в makefile'ы?

shlyumper

в 6 студии был конвертор в makefile'ы встроенный в студию. Только генерировал он их для диалекта microsoft nmake.
Оставить комментарий
Имя или ник:
Комментарий: