Useissa integroiduissa ympäristöissä on mahdollisuus tehdä projekteja, eli ilmoittaa mitkä ovat työhömme vaikuttavia tiedostoja. Usein näiden projektien käyttäminen on helpompaa kuin MAKE- tiedostojen tekeminen.
Projektin merkitys on vastaava kuin MAKE-tiedostonkin: pitää kirjaa siitä, mitkä tiedostot kuuluvat kokonaisuuteen. Toisaalta projektitiedostoa tarvitaan erityisesti linkityksessä.
Mikäli merkkijonontestaus esimerkkimme mjonot.c käännettäisiin irrallisena, syntyisi tiedosto mjonot.obj. Tähän ei vielä projektia tarvita. Vastaavasti voidaan kääntää pääohjelma t_mjonot.c. Vieläkään ei projektia tarvittaisi. Ongelmaksi tuleekin linkitys. Päämoduulissa viitataan aliohjelmaan lue_jono. Mistä linkittäjä arvaisi etsiä tätä aliohjelmaa tiedostosta mjonot.obj?
Tämä tieto löytyy projektista, johon esimerkissämme mainittaisiin ne C- tiedostot, jotka kääntämisessä tarvitaan, eli
t_mjonot.c mjonot.c
Mikäli C- kielistä koodia ei ole olemassa, voidaan projektiin usein ilmoittaa myös jo käännettyjä tiedostoja, eli esimerkiksi
t_mjonot.c mjonot.obj
Siis linkittäjä etsii aliohjelmia ja globaaleita muuttujia projektissa mainituista tiedostoista C- kielen standardikirjastojen lisäksi.
Esimerkiksi Turbo- C :ssä valitaan aluksi uuden projektin luonti. Tämän jälkeen projekti- ikkunaan osoitetaan ne *.c tiedostot, joita haluamme käyttää. Voidaan myös lisätä *.obj tai *.lib tiedostoja, mikäli lähdekielisiä tiedostoja ei ole.
Header- tiedostoja ( *.h) ei koskaan laiteta projektiin!
Itse kääntäminen suoritetaan sitten normaalisti.
Projektin perusteella kääntäjä ensin kääntää kaikki ne .c- tiedostot, joista ei vielä ole .obj - tiedostoa tai .obj- tiedoston päiväys on vanhempi kuin .c- tiedoston. Tämän jälkeen linkitetään kaikki projektissa mainitut .obj- tiedostot yhdeksi .exe- tiedostoksi.
Huomattakoon että projektissa tulee olla tasan yksi .c- tiedosto, jossa on main- funktio.