uprava Makefile aby libX11 zahrnul len ak je ho treba

Sekcia: Programovanie 28.02.2008 | 19:01
Avatar Frantisek Klabzuba Debian  Používateľ
mam takyto makefile:
TARGETS = demo1
CC = g++
RM = rm
CFLAGS = -L/usr/X11R6/lib -lX11 -lXpm -I/usr/X11R6/include -Wall -pedantic -O3

all: $(TARGETS)

%: %.cc
        $(CC) $< -o $@ $(CFLAGS)
        strip $@

clean:
        $(RM) *.o $(TARGETS)

Ak nim skompilujem program demo1 ktory pouziva xlib, tak ju to samozrejme zahrnie. Ak ale demo1 je program ktory xlib vobec nepouziva (napr. konzolove hello world) tak linker tu xlib aj tak prilinkuje. Ako to spravit aby ju to neprilinkovalo ak nieje potrebna?
Ale tak aby som mohol toto makefile pouzivat na oba programy, nie ze ked idem robit konzolove demo tak v makefile vykomentujem -lX11.
    • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 11:06
      Avatar uid0 Debian  Používateľ
      daj tam taky parameter, podla ktoreho sa vyhodnoti bud kniznica alebo prazdny retazec

      ale tomu hovorim sila, ked je niekomu tazko upravit makefile podla potrieb programu
      Debian. apt-get into it…
      • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 15:38
        Avatar Frantisek Klabzuba Debian  Používateľ
        >> daj tam taky parameter, podla ktoreho sa vyhodnoti bud kniznica alebo prazdny retazec

        Mohol by si byt konkretnejsi. Ako to mam spravit?

        >> ale tomu hovorim sila, ked je niekomu tazko upravit makefile podla potrieb programu

        Je to program ktory disjunktne (len jedno z nich) vyuzica Xlib / FrameBuffer / Allegro / nic + to vsetko staticky alebo dynamicky linkovane, plus na freebsd dalsi makefile, uz na to mam 3 rozne makefile a to som doteraz linkoval len oproti xlib, teraz pribudol framebuffer, allegro a nic a s tym mam problem lebo ked dam napr. allegro tak mi to pribali aj xlib co je blbost...
        • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 16:43
          Avatar uid0 Debian  Používateľ
          jako napriklad:
          ifdef chcem_X_ty_hajzel
          CFLAGS = jeden
          else
          CFLAGS = dva
          endif
          
          jeden:
                  echo $(CFLAGS)
          
          $ make jeden chcem_X_ty_hajzel=1
          echo jeden
          jeden
          

          alebo
          ifeq ($(chcem_X), jes)
          CFLAGS = jeden
          else
          CFLAGS = dva
          endif
          
          jeden:
                  echo $(CFLAGS)
          
          $ make jeden chcem_X=jes
          echo jeden
          jeden
          

          alebo
          ifeq ($(shell date +%Y), 2008)
          CFLAGS = jeden
          else
          CFLAGS = dva
          endif
          
          jeden:
                  echo $(CFLAGS)
          
          $ make jeden
          echo jeden
          jeden
          

          skus nahliadnut do manualu GNU make
          Debian. apt-get into it…
          • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 18:37
            Avatar Ladislav Michnovic SuSE  Používateľ
            Nemal by to riesit cez prepinac v configure? Aspon sa mi zda, ze tak sa to bezne robi.
            --disable-x
            Only man who sells empty boxes is the undertaker.
            • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 19:37
              Avatar uid0 Debian  Používateľ
              zrejme nepouziva autoconf
              Debian. apt-get into it…
              • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 22:31
                Avatar Frantisek Klabzuba Debian  Používateľ
                ten makefile ma 10 riadkov, pouzit autoconf by bola imho blbost
          • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 19:18
            Avatar Frantisek Klabzuba Debian  Používateľ
            vdaka
    • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 15:33
      Avatar Ladislav Michnovic SuSE  Používateľ
      Nie je to nahodou naruby? Makefile urcuje ako sa ma kompilovat program a nie program urcuje ako ma byt vygenerovany Makefile.
      Only man who sells empty boxes is the undertaker.
      • Re: uprava Makefile aby libX11 zahrnul len ak je ho treba 29.02.2008 | 17:14
        WlaSaTy   Návštevník
        na zaklade dependencies by sa to teoreticky dalo ale gcc -M riesi nieco ine.

        inak tiez sa priklanam k nazoru ze nech sa jedna verzia prilinkuje s tou kniznicou staticky alebo dynamicky a v cieli all nech sa vola aj clean. ale otazkou je ci sa s tym nieco vobec vyriesi. ten rozdiel v usetreni dvoch riadkov v makefile sa uz davno prehlusilo tliachanim o probleme.