1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

"make" and library

Discussion in 'C' started by onako, Aug 18, 2010.

  1. onako

    onako New Member

    Joined:
    Jul 29, 2010
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    My current c++ application is compiled by calling "make", and invoked by calling "./fileName.bin".
    Now, I want to add the functionality of cairo library into the application. Note that the the program written specifically
    for testing cairo (outside my application) is compiled by
    "g++ -o fileX $(pkg-config --cflags --libs cairo) fileX.cpp"
    and invoked by "./fileX".
    Now, I dont know how to link cairo library to my application that is invoked by calling make.
    I added the following into my application:
    Code:
    #include <cairo.h>
    #include <cairo-pdf.h>
    int myPDFdrawing() {
      cairo_surface_t *surface;
      cairo_t *cr;
    
      //
      
    
      //
      surface = cairo_pdf_surface_create("pics/mojFajl.pdf", 500, 648);
      cr = cairo_create(surface);
    
      cairo_set_source_rgb(cr, 0, 0, 0);
      cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
          CAIRO_FONT_WEIGHT_NORMAL);
      cairo_set_font_size (cr, 40.0);
      
      cairo_translate (cr, 0.0, 150.0);
    
      cairo_move_to(cr, 100.0, 500.0);
      cairo_show_text(cr, "Disziplin ist Macht.");
      
      cairo_move_to (cr, -100, -110.5);
      cairo_line_to (cr, -180, -130.5);
      cairo_set_line_width (cr, .05);
      cairo_stroke (cr);
      cairo_show_page(cr);
    
      cairo_surface_destroy(surface);
      cairo_destroy(cr);
    
      return 0;
    
    }
    
    I tried invoking "make $(pkg-config --cflags --libs cairo)", but this is not appropriate.
    I would appreciate your help on this.
    Thanks
     
  2. onako

    onako New Member

    Joined:
    Jul 29, 2010
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    This is the content of my Makefile:
    Code:
     STXXL_ROOT      ?= /home/laptop/stxxl-1.2.1
    STXXL_CONFIG    ?= stxxl.mk
    include $(STXXL_ROOT)/$(STXXL_CONFIG)
    
    # use the variables from stxxl.mk
    CXX              = $(STXXL_CXX)
    CPPFLAGS        += $(STXXL_CPPFLAGS)
    
    # add your own optimization, warning, debug, ... flags
    # (these are *not* set in stxxl.mk)
    CPPFLAGS        += -O3 -Wall -g -DFOO=BAR
    
    # build your application
    # (my_example.o is generated from my_example.cpp automatically)
    fileA.bin: fileA.o
    	$(CXX) $(CPPFLAGS) $(CXXFLAGS) fileA.o -o $@ $(STXXL_LDLIBS)
    
     
  3. xpi0t0s

    xpi0t0s Mentor

    Joined:
    Aug 6, 2004
    Messages:
    3,012
    Likes Received:
    203
    Trophy Points:
    0
    Occupation:
    Senior Support Engineer
    Location:
    England
    Just add it to the link line:
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) fileA.o cairo.a -o $@ $(STXXL_LDLIBS)
     
    shabbir likes this.

Share This Page