---
name: "cppo"
section: "1"
platform: "linux"
package: "cppo"
version: "1.8.0-1+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cppo"
---

# cppo(1)

lightweight cpp-like preprocessor for OCaml

## NAME

cppo - lightweight cpp-like preprocessor for OCaml

## SYNOPSIS

**cppo \[*Options...*\] *files*...**

## DESCRIPTION

**cppo** is the equivalent of the C preprocessor for OCaml. It permits the definition and expansion of simple (in comparison with  **camlp4)** macros and file inclusion.  **cppo** supports functional macros, conditionals, boolean and arithmetic expressions, stringification, and calling different, external preprocessors. For a precise description of the features, see  */usr/share/doc/cppo/README.gz.*

## OPTIONS

- **-D IDENT**

  define  *IDENT*

- **-U IDENT**

  undefine *IDENT*

- **-I DIR**

  add *DIR* to the search path for included files

- **-o FILE**

  write output to *FILE*

- **-q**

  Identify and preserve camlp4 quotations

- **-s**

  Output line directives pointing to the exact source location of each token, including those coming from the body of macro definitions. This behavior is off by default.

- **-n**

  Do not output any line directive other than those found in the  input (overrides  **-s).**

- **-version**

  print version and exit

- **-x NAME:CMD\_TEMPLATE**

  Define a custom preprocessor target section starting with:

  \#ext "NAME"

  and ending with:

  \#endext

  *NAME* must be a lowercase identifier of the form \[a-z\]\[A-Za-z0-9\_\]\*

  *CMD\_TEMPLATE* is a command template supporting the following special sequences:

  %F  file name (unescaped; beware of potential scripting attacks)

  %B  number of the first line

  %E  number of the last line

  %%  a single percent sign

  The filename, the first line number and the last line number are available to the external preprocessor via the environment variables *CPPO\_FILE, CPPO\_FIRST\_LINE, CPPO\_LAST\_LINE.*

  The command is expected to read from stdin and to write to stdout.

- **-help \| --help**

  Display options and exit

## SEE ALSO

- the **cppo** web page, *http://mjambon.com/cppo.html*

  - the text manual in */usr/share/doc/cppo/README.gz*

  ## AUTHOR

*This manual page was written by Sylvain Le Gall* *\<gildor@debian.org\> and Hendrik Tews \<hendrik@askra.de\>,* *specifically for the Debian project (and may be used by others).*
