Build cpp projektek nmake-vel
A szoftvertermékek különböző módon gyűjthetők össze. Inkább, hogy mindezt az IDE, de előfordul, hogy egy ilyen lehetőség elfogadhatatlan - néha szükség van, hogy egy modul, amely lehetővé teszi, hogy összegyűjti a terméket a forráskódot (beszélünk a kódot, C ++), és nem követelte ugyanakkor telepített Visual Studio. A probléma egyik megoldása a Microsoft által kifejlesztett nmake segédprogram használata. A cikk leírja ennek a megközelítésnek a megvalósítását, és általános képet ad a nmake-ral való együttműködésről.
Csomagstruktúra
A fordítóhoz és a linkerhez egy sor fájl szükséges:
- futtatható fájlok. / VisualStudio / vc7 / bin (cl.exe, link.exe stb.);
- fejléc fájlok;
- statikus könyvtárak:
- dinamikus könyvtárak;
- a debug-verziók összeállításához szükséges pdb-fájlok;
Nyilvánvaló, hogy az általános részben csak azok a fájlok használhatók, amelyeket a legtöbb projekt (tartalom ... / VisualStudio / vc7 / PlatformSDK stb.) Használ. Az adott projekthez tartozó könyvtárak és fejlécfájlok tárolhatók a könyvtárban.
mert ezeket az alkatrészeket az egyes cpp projektek elkészítésekor használják, külön helyre lehet vinni (esetemben egy C: \ buildmastering nevű mappa). Arra a gondolatra, hogy mi más a tervezési területen, mégis olyan világos ötlet született, hogy elosztja a munkát az összeszerelésre való felkészüléssel és a fordító konfigurációjával a linkerrel.
Így bármely projekt struktúrájában vannak:
- forrás könyvtár;
- egy könyvtár a fordító és a linker beállításainak tárolására;
- könyvtár az építmény eredményéhez;
A parancsfájlban használt parancsokról (például @echo off vagy setlocal enabledelayedexpansion stb.) Olvashat a "Batman osztály" című cikkben.
Ahelyett, hogy létrehozna egy makefile-t, amely tartalmazza a COMPILER_FILE_SET és a LINKER_FILE_SET változókat, érdemes környezeti változókat használni. Ez a megoldás általában nem megfelelő, mivel ha a projekt sok * .cpp fájlt tartalmaz, azok listája nem illeszkedik a környezeti változóhoz rendelkezésre álló kötetbe.
következtetés
köszönöm
Köszönet Alexey Alexandrovnak a cikkért!
Hatalmas emberi megköszönés Kolya Merkin számára, hogy hajlandó megosztani hatalmas élményét!