Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   "make" and library (http://www.go4expert.com/forums/make-and-library-t23047/)

onako 18Aug2010 14:53

"make" and library
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:

#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_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);


  return 0;


I tried invoking "make $(pkg-config --cflags --libs cairo)", but this is not appropriate.
I would appreciate your help on this.

onako 18Aug2010 15:04

Re: "make" and library
This is the content of my Makefile:

STXXL_ROOT      ?= /home/laptop/stxxl-1.2.1
STXXL_CONFIG    ?= stxxl.mk

# use the variables from stxxl.mk
CXX              = $(STXXL_CXX)

# 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)

xpi0t0s 19Aug2010 12:58

Re: "make" and library
Just add it to the link line:
$(CXX) $(CPPFLAGS) $(CXXFLAGS) fileA.o cairo.a -o $@ $(STXXL_LDLIBS)

All times are GMT +5.5. The time now is 14:18.