Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Система компиляции


Автор: tofreesky 7.8.2011, 16:35
Пытался разобратся с make, так и не вышло, решил писать свою систему сборки, т.е. что я хочу сделать:

1) Система сборки парсит конфиг файл, похожий на make формат
2) Не измененные файлы (с зависимостями) не перекомпилируются
3) Проверка зависимостей и перекомпиляция измененных файлов
4) Сборка всего приложения
5) В конфиг файле пишется MD5 файла, для дальнейшей проверки на изменение исходника.


А вопрос в следующем, ведь наверняка такое можно сделать стороними утилитами? Или лучше писать свою. 

Все это нужно для увеличения скорости сборки.

Автор: boostcoder 7.8.2011, 16:37
Цитата(tofreesky @  7.8.2011,  16:35 Найти цитируемый пост)
наверняка такое можно сделать стороними утилитами?

конечно smile - make, cmake.

Автор: tofreesky 7.8.2011, 17:07
Как собрать через make простое приложение *.cpp и *.h зависимостью, что бы он не пересобирал, как он проверит что файл изменился?

Windows MinGW

Автор: boostcoder 7.8.2011, 17:13
легко!
гуглить http://www.google.ru/#sclient=psy&hl=ru&newwindow=1&source=hp&q=GNU+make+dependencies&pbx=1&oq=GNU+make+dependencies&aq=f&aqi=g1&aql=&gs_sm=e&gs_upl=11757l12548l2l12933l4l3l0l0l0l0l239l620l0.1.2l3l0&bav=on.2,or.r_gc.r_pw.&fp=327aa868cb533072&biw=1440&bih=813.
как бы на то make и создавался. иначе какой в нем смысл, если он тупо пересобирает все smile

Добавлено через 7 минут и 25 секунд
вот конкретно твой случай: http://scottmcpeak.com/autodepend/autodepend.html
гугл, вообще-то полезная штука ;)
нет, конечно, ради опыта запрограммировать аналог make можно...а нужно ли?

Автор: tofreesky 7.8.2011, 17:37
Мне легче свой написать, чем тратить время на изучения как работает make. 

Код

test: test.o 
    F:\MinGW\bin\g++.exe test.o -o test.exe
    
test.o: test.cpp
    F:\MinGW\bin\g++.exe -c -o test.o test.cpp

clean:
    rm test test.o


вывод



Код

C:\Documents and Settings\root>C:\MinGW\bin\mingw32-make.exe F:\MinGW\test\makef
ile test
mingw32-make: Nothing to be done for `F:\MinGW\test\makefile'.
mingw32-make: *** No rule to make target `test'.  Stop.

C:\Documents and Settings\root>


Автор: boostcoder 7.8.2011, 17:39
Цитата(tofreesky @  7.8.2011,  17:37 Найти цитируемый пост)
легче свой написать

удачи smile

Добавлено через 45 секунд
как напишешь, выложи плиз.
я подписался на тему.
очень жду.

Автор: voral 8.8.2011, 07:50
Цитата(tofreesky @  7.8.2011,  17:37 Найти цитируемый пост)

вывод

Так вы не праильно запускате 
Код

C:\Documents and Settings\root>C:\MinGW\bin\mingw32-make.exe -С F:\MinGW\test\ test

Автор: tofreesky 8.8.2011, 12:58
Код

Так вы не праильно запускате 


Вчера догадался запискать так как вы написали, все работает, разве что make пересобирает все файлы постоянно, для чего, если они не требуют перекомпиляции?

Код

bmpfile.o: src\bmpfile.cpp
    F:\MinGW\bin\g++.exe -c -fverbose-asm -Os -o src\obj\bmpfile.o src\bmpfile.cpp

Автор: boostcoder 8.8.2011, 12:58
Цитата(tofreesky @  8.8.2011,  12:58 Найти цитируемый пост)
для чего, если они не требуют перекомпиляции?

я вам уже ответил.

Автор: xvr 8.8.2011, 13:46
Цитата(tofreesky @  8.8.2011,  12:58 Найти цитируемый пост)
разве что make пересобирает все файлы постоянно

Так написали  smile 
Надо так:
Код

src\obj\bmpfile.o: src\bmpfile.cpp
    F:\MinGW\bin\g++.exe -c -fverbose-asm -Os -o src\obj\bmpfile.o src\bmpfile.cpp


Автор: boostcoder 8.8.2011, 14:16
tofreesky, в общем, вы просто не умеете его(make) готовить. и он в этом не виноват.

Автор: tofreesky 8.8.2011, 14:26
как еще депенденси прикрепить которые mingw генерирует?

Автор: boostcoder 8.8.2011, 14:32
я тебе прямую ссылку дал. читать западло?

Автор: tofreesky 8.8.2011, 14:37
C английским плохо

Автор: boostcoder 8.8.2011, 14:41
сочувствую

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)