Makefile írása

Kezdőlap Fórumok Programozás Makefile írása

8 bejegyzés megtekintése - 1-8 / 8
  • Szerző
    Bejegyzés
  • #2057430
    terjekid
    Felhasználó

      Kicsit többet kerestem a neten, és azok alapján így módosítottam a Makefile-t:

      revcontrast: revcontrast.c rwPNM.o memPNM.o
      cc -o revcontrast revcontrast.c rwPNM.o memPNM.o
      rwPNM.o: rwPNM.c rwPNM.h memPNM.o
      cc -c rwPNM.c memPNM.o
      memPNM.o: memPNM.c memPNM.h
      cc -c memPNM.c memPNM.h

      Ez így már megy.

      #2057431
      goraki
      Felhasználó

        Az én makefile-aim így néznek ki:

        Code:
        CC = g++ -Wall -ansi
        $(CC) -c filem1.cpp
        $(CC) -c filem2.cpp
        $(CC) filem1.o filem2.o -o progi

        A .h-k használata már programozási kérdés(amivel én sokat szívtam:D).

        #2057432
        terjekid
        Felhasználó

          Igazából ez egy házi feladat elsõ lépése lenne, azért is vannak a .h-k Azért is kértem segítséget, mert már egy ideje keresgéltem valami hasonló leírást, de nem találtam, és már kezdezz sûrgõssé válni a dolog. A feladatban nem csak egszerûen fordítani kell, hanem majd késõbb egyáb állapotokat (vagy mi a nevük: a kettõspontal megadott soroknak?)
          Az elsõ sor csak azért kell nálad, hogy egyszerûsítse a kódot olyan szempontból, hogy nem kell mindig kiírnod a „g++ -Wall -ansi” -t, nem?

          #2057433
          goraki
          Felhasználó

            Igen, azért van ott az elsõ sor.

            #2057434
            terjekid
            Felhasználó

              Azért köszi szépen a segítséget 🙂

              #2057435
              goraki
              Felhasználó

                Szivesen. Bár nem tudom mit segítettem:D.
                Egy tipp: ha bajba kerülsz a .h-kkal, hogy redefined üzeneteket kapsz stb. akkor itt egy rendkívül bugyuta, ámde hatásos megoldás(magamtól jöttem rá, szóval a tanárnak nem biztos, hogy tetszeni fog :)): Mindegyik .h elejére tegyél egy egyedi #define-t pl. #define betoltve_fileneve_h 1 és más fájlból includoláskor ellenõrizd, hogy nincs-e betöltve úgy, hogy ellenõrzöd, hogy definiálva van-e az a sor. pl.:

                Code:
                #ifndef betoltve_fileneve_h
                #include „fileneve.h”
                #endif

                Ezt csak végszükség esetén használd:D

                #2057436
                terjekid
                Felhasználó

                  Ezt a módszert még c++ -nál tanultam, hogy elkerülje a többszörör isnludolást. A fordításal manuálisan nem is volt eddig problémám, csak éppen a makefile írását nem értettem. Amiket találtam leírások azok mind túl bonyolították, és nem az elején kezdték el egyszerû példákkal, de most már azt hiszem jöhetnek azok is…

                  #1883066
                  csaba
                  Felhasználó

                    Sziasztok!

                    Egy egyszerû feladatot kellene megcsinálnom: három forrás, és két header file alapján kellene egy Makefilet írni.  A makefile-m így néz ki:

                    memPNM: memPNM.o revcontrast.o
                    cc -o memPNM memPNM.o revcontrast.o
                    rwPNM: rwPNM.o revcontrast.o
                    cc -o rwPNM rwPNM.o revcontrast.o
                    memPNM.o: memPNM.c memPNM.h
                    rwPNM.o: rwPNM.c rwPNM.h
                    revcontrast:
                    cc -o revcontrast revcontrast.c rwPNM.o memPNM.o

                    az rwPNM-hez kell már a memPNM, a revconrast tartalmazza a main-t. Mikor fordítani szeretném, akkor viszont hibát ír ki:

                    cc    -c -o memPNM.o memPNM.c
                    cc    -c -o revcontrast.o revcontrast.c
                    revcontrast.c: In function ‘main’:
                    revcontrast.c:15: warning: incompatible implicit declaration of built-in function ‘exit’
                    cc -o memPNM memPNM.o revcontrast.o
                    revcontrast.o: In function `main’:
                    revcontrast.c:(.text+0x5a): undefined reference to `readPNM’
                    revcontrast.c:(.text+0xcc): undefined reference to `writePNM’
                    collect2: ld returned 1 exit status
                    make: *** [memPNM] Error 1

                    Mit rontottam el? Elõre is kösz a választ!

                  8 bejegyzés megtekintése - 1-8 / 8
                  • Be kell jelentkezni a hozzászóláshoz.