Produsele software pot fi colectate în diverse moduri. Prefer să fac toate astea cu IDE, dar se întâmplă că o astfel de opțiune nu este acceptabilă - este uneori necesar pentru a face un modul care permite de a colecta produsul pe codul sursă (este vorba despre codul de la C ++), și nu au cerut în același timp instalat Visual Studio. O soluție la această problemă este utilizarea utilității nmake, dezvoltată de Microsoft. Articolul descrie implementarea acestei abordări și oferă o idee generală de lucru cu nmake.
Structura pachetelor
Există un set de fișiere necesare pentru compilator și linker:
- fișiere executabile de la. / VisualStudio / vc7 / bin (cl.exe, link.exe etc);
- fișiere antet;
- biblioteci statice:
- dinamica bibliotecilor;
- fișierele pdb necesare pentru construirea de versiuni de depanare;
Este clar că are sens să faci în general doar acele fișiere care sunt de fapt folosite de majoritatea proiectelor (conținut ... / VisualStudio / vc7 / PlatformSDK etc.). Bibliotecile bibliotecilor și fișierele antet specifice unui anumit proiect pot fi stocate în directorul său.
pentru că aceste părți vor fi folosite la construirea fiecărui proiect cpp, acestea pot fi scoase la un loc separat (în cazul meu este un dosar cu numele simplu C: \ buildmastering). De gândire cu privire la ce altceva să se îmbunătățească în domeniul designului, sa născut o idee luminată pentru a împărți lucrarea de pregătire pentru asamblare și configurarea compilatorului cu linkerul.
Astfel, în structura oricărui proiect există:
- directorul sursă;
- un director pentru stocarea setărilor compilatorului și linker-ului;
- director pentru rezultatul construcției;
Despre comenzile folosite în script (cum ar fi @echo off sau setlocal enabledelayedexpansion etc), puteți citi în articolul "Batman class".
În loc să creați un makefile care conține variabilele COMPILER_FILE_SET și LINKER_FILE_SET, este posibil să doriți să utilizați variabile de mediu. Această soluție nu este potrivită în cazul general, deoarece dacă proiectul conține o mulțime de * .cpp, lista nu se potrivește în volumul disponibil pentru variabila de mediu.
concluzie
mulțumesc
Multe mulțumiri lui Alexey Alexandrov pentru articol!
Un om imens datorită lui Kolya Merkin pentru dorința sa de a împărtăși o experiență imensă!