Здрасте! Есть папка с файлами: <font size=1>19.02.2006 16:36 <DIR> . 19.02.2006 16:36 <DIR> .. 28.07.2001 18:30 20 284 crackme_01.aps 28.07.2001 18:30 1 060 crackme_01.clw 19.07.2001 11:45 1 311 crackme_01.cpp 19.07.2001 11:45 4 168 crackme_01.dsp 19.07.2001 11:45 543 crackme_01.dsw 19.07.2001 11:45 1 226 crackme_01.h 19.07.2001 16:00 5 107 crackme_01.rc 28.07.2001 18:38 2 652 crackme_01Dlg.cpp 19.07.2001 11:49 1 320 crackme_01Dlg.h 19.02.2006 16:36 <DIR> res 19.07.2001 16:00 593 resource.h 19.07.2001 11:45 212 StdAfx.cpp 19.07.2001 11:45 999 StdAfx.h </font><!--size--> Вопрос: можно ли создать makefile, чтобы скомпилировать этот проект без IDE (знаю, что IDE здесь не при чём, но так понятнее )
Я предлагаю написать его самостоятельно руками. Вот пример makefile (громоздкий, но более менее реальный) (для ассемблерного проекта, но принцип остается неизменным) PROG = simple RES = rsrc MASMPATH = d:\masm32 DEBUGFLAGS_LINK = /debug /debugtype:cv /pdb:none DEBUGFLAGS_ML = /Zi $(PROG).exe: $(PROG).obj $(RES).res $(MASMPATH)\bin\link.exe $(DEBUGFLAGS_LINK) /subsystem:windows /libpath:$(MASMPATH)\lib $(PROG).obj $(RES).res $(PROG).obj: $(PROG).asm $(MASMPATH)\bin\ml.exe $(DEBUGFLAGS_ML) /c /coff /I$(MASMPATH)\include $(PROG).asm $(RES).res: $(RES).rc $(MASMPATH)\bin\rc.exe $(RES).rc Несколько комментариев Утилита make просматривает содержимое makefile и строит дерево сборки проекта, сборка происходит от листьев к корню. Сначала указываешь цель, затем через двоеточие список зависимостей потом то же для зависимостей - пока не доберешься до исходных файлов. Перед выполнением главной цели make проверяет удовлетворение всех зависимостей: если файл-цель младше файлов-зависимостей (или отсутствует), то предполагается что он должен быть перекомпилирован и выполняются соответствующие команды. (да, ессно, команд может быть сколько угодно) Утилита начинает строить дерево от первой цели, если скажем нужно скомпилировать несколько проектов, то можно вводить фиктивные цели any_name: first.exe second.exe first.exe: ... ... second.exe: ... ... Для выполнения с конкретной цели можно вызывать "make target_name" Например make clear ... clear: del *.obj ... Последнее, make - утилита начала 70-х и с того времени сохраняется странное требование - после указания цели перед командой должен стоять символ табуляции ... Здесь он не отображается, но он должен (!) быть P.S. если нужно написать универсальный (ну почти...) то: make (по крайней мере в никсах) может распознавать типы файлов по суффиксам и вызывать соответствующие команды - в это я не углублялся - кажется на citforum была статья "эффективное использование make" P.S.S опять же в никсах есть утилита autoconf для генерации makefile - подробнее так же не знаю, так как пока забил на это...
Эх... надыбал-таки я IDE-шку, поэтому можно тему считать закрытой. Спасибо ssx,CrazyFun,optio(не лень же тебе было столько писать) и отдельное спасибо q_q за дзенную фразу "можно"
Я об этом написал (может не очень понятно) - пересобираются только устаревшие файлы, так что в этом смысле все в порядке. Другой вопрос что применять make не очень удобно - в прочем уже написана куча альтернатив.