为 Jupyter 配置运行 C++ 程序

为什么需要使用 xeus-cling?

  • 在项目开发的早期,用于快速实验和重现错误
  • 不需要使用 cpp 及复杂的项目设置来解决依赖,只需要 shift+Enter 即可

如何在 Linux 上安装 xeus-cling?

  • 使用 conda-forge 安装
1
conda install xeus-cling -c conda-forge
  • 使用源码进行安装
1
2
3
4
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/prefix ..
make install

如何在 jupyter 上配置 xuus-cling 内核?

  • 如果使用 conda 安装 xeus-cling,则内核无需配置,其安装位置为:~/anaconda3/envs/pyxx/share/jupyter/kernels/
  • 如果使用源码进行安装,需要使用以下命令配置
1
2
3
jupyter kernelspec install PREFIX/share/jupyter/xcpp11 --sys-prefix
jupyter kernelspec install PREFIX/share/jupyter/xcpp14 --sys-prefix
jupyter kernelspec install PREFIX/share/jupyter/xcpp17 --sys-prefix

如何在 xeus-cling 中配置编译参数?

  • 在 notebook 中,xeus-cling 将使用自定义参数对代码进行编译
  • 自定义参数通常在 kernelspec 文件中添加,该文件通常位于~/anaconda3/envs/py37/share/jupyter/kernels/xcpp14/kernel.json
  • 如给 C++14 添加 - pthread 、-lpthread ,修改 kernelspec 文件如下
1
2
3
4
5
6
7
8
9
10
11
12
{
"display_name": "C++14",
"argv": [
"/home/xx/anaconda3/envs/py37/bin/xcpp",
"-f",
"{connection_file}",
"-std=c++14",
"-pthread",
"lpthread"
],
"language": "C++14"
}

jupyter 使用 xeus-cling 时,如何使用第三方库?

  • 使用 add_include_path
1
2
3
4
5
6
// 添加include目录
#pragma cling add_include_path("inc_directory")
// 添加lib目录
#pragma cling add_library_path("lib_directory")
// 加载lib文件
#pragma cling load("libname")

jupyter 使用 xeus-cling 时,有哪些魔法命令?

  • %% executable ―将函数转为可执行的二进制
1
2
3
4
# include 
int square(int x) {return x*x;}
%%executable square.x
std::cout<

如何在 Windows 上安装 jupyter 的 xeus-cling 环境?

  • (1) xeus-cling 不支持 windows,所以需要开启 windows 的 WSL 功能
  • (2) 安装 ubuntu 子系统
  • (3) 在 unbuntu 上安装 minconda
  • (4) 在 minconda 上安装 xeus-cling

参考:

  1. WIN10 中使用 vscode,在 jupyter 中运行 c++ 程序,整体搭建流程 - 知乎
  2. 不使用 Store 安装 WSL_weixin_34239169 的博客 - CSDN 博客
  3. Ubuntu18.04 安装 miniconda3 及使用 - 知乎
  4. GitHub - jupyter-xeus/xeus-cling: Jupyter kernel for the C++ programming language