1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
3 <!-- SECTION: Programming -->
5 <title>Introduction to CUPS Programming
</title>
6 <meta name=
"keywords" content=
"Programming">
7 <meta name=
"creator" content=
"Mini-XML v2.5">
8 <style type=
"text/css"><!--
10 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
13 H1, H2, H3, H4, H5, H6, P, TD, TH {
14 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
18 font-family: monaco, courier, monospace;
23 font-family: monaco, courier, monospace;
32 border: dotted thin #999999;
37 PRE.command EM, PRE.example EM {
38 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
42 font-family: monaco, courier, monospace;
53 border: solid thin #999999;
59 text-decoration: none;
62 A:link:hover, A:visited:hover, A:active {
63 text-decoration: underline;
71 border: solid thin #999999;
72 border-collapse: collapse;
88 border: solid thin #cccccc;
95 border-bottom: solid thin #999999;
104 caption-side: bottom;
124 border: thin solid #000000;
132 H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
138 border-bottom: solid 2pt #000000;
156 font-family: monaco, courier, monospace;
165 border: solid thin #999999;
166 border-collapse: collapse;
171 DIV.summary TABLE TD, DIV.summary TABLE TH {
172 border: solid thin #999999;
178 DIV.summary TABLE THEAD TH {
182 /* API documentation styles... */
189 div.body h3, div.body h4, div.body h5 {
190 margin-bottom: 0.5em;
193 .class, .enumeration, .function, .struct, .typedef, .union {
194 border-bottom: solid thin #999999;
201 code, p.code, pre, ul.code li {
202 font-family: monaco, courier, monospace;
205 ul.code, ul.contents, ul.subcontents {
206 list-style-type: none;
216 ul.contents li ul.code, ul.contents li ul.subcontents {
229 margin-bottom: 0.5em;
232 /* This is just for the HTML files generated with the framedhelp target */
235 border: solid thin black;
244 div.contents ul.contents {
247 div.contents ul.subcontents li {
256 "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
258 Introduction to CUPS programming header for the Common UNIX Printing System
261 Copyright 2008 by Apple Inc.
263 These coded instructions, statements, and computer programs are the
264 property of Apple Inc. and are protected by Federal copyright
265 law. Distribution and use rights are outlined in the file "LICENSE.txt"
266 which should have been included with this file. If this file is
267 file is missing or damaged, see the license at "http://www.cups.org/".
270 <h1 class=
"title">Introduction to CUPS Programming
</h1>
272 <div class='summary'
><table summary='General Information'
>
283 cups/sidechannel.h
</th>
294 <td>Programming:
<a href='api-cups.html' target='_top'
>CUPS API
</a><br>
295 Programming:
<a href='api-array.html' target='_top'
>Array API
</a><br>
296 Programming:
<a href='api-filedir.html' target='_top'
>File and Directory APIs
</a><br>
297 Programming:
<a href='api-filter.html' target='_top'
>Filter and Backend Programming
</a><br>
298 Programming:
<a href='api-httpipp.html' target='_top'
>HTTP and IPP APIs
</a><br>
299 Programming:
<a href='api-ppd.html' target='_top'
>PPD API
</a><br>
300 Programming:
<a href='api-raster.html' target='_top'
>Raster API
</a></td>
304 <h2 class=
"title">Contents
</h2>
305 <ul class=
"contents">
307 <li><a href=
"#OVERVIEW">Overview
</a></li>
308 <li><a href=
"#COMPILING">Compiling Programs
</a><ul class=
"subcontents">
309 <li><a href=
"#XCODE">Compiling with Xcode
</a></li>
310 <li><a href=
"#COMMANDLINE">Compiling with GCC
</a></li>
311 </ul class=
"subcontents"></li>
312 <li><a href=
"#WHERETOGO">Where to Go Next
</a></li>
315 "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
317 Introduction to CUPS programming content for the Common UNIX Printing System
320 Copyright 2008 by Apple Inc.
322 These coded instructions, statements, and computer programs are the
323 property of Apple Inc. and are protected by Federal copyright
324 law. Distribution and use rights are outlined in the file "LICENSE.txt"
325 which should have been included with this file. If this file is
326 file is missing or damaged, see the license at "http://www.cups.org/".
329 <h2 class=
"title"><a name=
"OVERVIEW">Overview
</a></h2>
331 <p>CUPS provides two libraries that interface with the different parts of the
332 printing system. The
"cups" library provides all of the common application and
333 filter functions while the
"cupsimage" library provides all of the imaging
334 functions used in raster printer drivers. The
"cups" library functions are
335 accessed by including the
<var><cups/cups.h
></var> header, while
336 "cupsimage" functions are found in the
<var><cups/raster.h
></var>
339 <h2 class=
"title"><a name=
"COMPILING">Compiling Programs
</a></h2>
341 <p>The CUPS libraries can be used from any C, C++, or Objective C program.
342 The method of compiling against the libraries varies depending on the
343 operating system and installation of CUPS. The following sections show how
344 to compile a simple program (shown below) in two common environments.
</p>
346 <p>The following simple program lists the available printers on the system:
</p>
348 <pre class=
"example">
349 #include
<stdio.h
>
350 #include
<cups/cups.h
>
355 cups_dest_t *dests, *dest;
356 int num_dests = cupsGetDests(
&dests);
358 for (i = num_dests, dest = dests; i
> 0; i --, dest ++)
361 printf(
"%s/%s\n", dest-
>name, dest-
>instance);
370 <h3><a name=
"XCODE">Compiling with Xcode
</a></h3>
372 <p>In Xcode, choose
<var>New Project...
</var> from the
<var>File
</var> menu,
373 then select the
<var>Standard Tool
</var> project type under
<var>Command Line
374 Utility
</var>. Click
<var>Next
</var> and choose a project directory. Click
375 <var>Next
</var> to create the project.
</p>
377 <p>In the project window, double-click on the
<var>Targets
</var> group and
378 control-click on the simple target to show the context menu. Choose
379 <var>Existing Framework...
</var> from the
<var>Add
</var> submenu. When the file
380 chooser sheet appears, press the
<kbd>/
</kbd> key and enter
"/usr/lib". Scroll
381 down the file list and select the
<var>libcups.dylib
</var> file. Click the
382 <var>Add
</var> button in the file chooser and attributes sheets.
</p>
384 <p>In the project window, double-click on the
<var>main.c
</var> source file.
385 Replace the template source code with the listing above and save it. Click the
386 <var>Build and Go
</var> button to build the sample program and run it.
</p>
388 <h3><a name=
"COMMANDLINE">Compiling with GCC
</a></h3>
390 <p>From the command-line, create a file called
<var>sample.c
</var> using your
391 favorite editor and then run the following command to compile it with GCC and
394 <pre class=
"command">
395 gcc -o simple `cups-config --cflags` simple.c `cups-config --libs`
399 <p>The
<code>cups-config
</code> command provides the compiler flags
400 (
"cups-config --cflags") and libraries (
"cups-config --libs") needed for the
403 <h2 class=
"title"><a name=
"WHERETOGO">Where to Go Next
</a></h2>
405 <p>If you are developing a print filter, driver, or backend, see the
406 <a href=
"api-filter.html" target=
"_top">Filter and Backend Programming
</a>
407 guide. Raster printer driver developers should also read the
408 <a href=
"api-raster.html" target=
"_top">Raster API
</a> reference.
</p>