Build options

Build flags

You can specify additional build flags that will be used by xeus-cling to compile the code in the notebook. To do so, you need to edit the kernelspec file (usually share/jupyter/kernels/xcppSTD/kernel.json, where STD is the version of the cpp standard) and add the build flags in the argv array.

For instance, if you want to pass the -pthread -lpthread flags to xeus-cling and compile C++17 code, the C++17 kernelpec file becomes:

{
    "display_name": "C++17",
    "argv": [
        "/home/yoyo/miniconda3/envs/xwidgets/bin/xcpp",
        "-f",
        "{connection_file}",
        "-std=c++17",
        "-pthread",
        "lpthread"
    ],
    "language": "C++17"
}

Using third-party libraries

When building a binary, you usually specify the include directories and the library path of third-party libraries in the build tool. The library will be loaded upon binary execution.

xeus-cling is slightly different, it allows you to specify both include directories and library path, however you need to load the library explicitly. This is done with special pragma commands that you can use in a code cell in a Jupyter Notebook:

  • #pragma cling add_include_path("inc_directory")

  • #pragma cling add_library_path("lib_directory")

  • #pragma cling load("libname")