最近学校的一个项目需要在服务器上编译安装ITK,顺便记录以下VS
Code接入远程环境的配置过程。
ITK编译与安装
前期准备
首先将源码压缩包上传至线上环境,解压源码。
1
| tar -xvf InsightToolkit-5.2.1.tar.gz
|
创建一个文件夹用于存放Cmake构建出来的文件。
再创建一个文件夹用于ITK的安装目标路径。
截止目前,文件结构应该为如下所示。
1 2 3 4
| |--InsightToolkit-5.2.1 |--InsightToolkit-5.2.1.tar.gz |--ITK-build |--ITK-install
|
上述四个文件及文件夹应处在同一层级下。
Cmake配置
进入ITK-build
文件夹,并执行cmake命令。
1 2
| cd ITK-build cmake ../InsightToolkit-5.2.1
|
按下回车后cmake会开始进行配置,耐心等待配置完成。
完成后会发现当前文件夹下构建出来很多东西,此时需要执行ccmake进行配置。
1
| ccmake ../InsightToolkit-5.2.1
|
按下回车后会进入ccmake的TUI界面。
此时按t
进入高级模式。
第一次配置
首先要配置的是编译器,更改如下两项为图中所示的路径。
此时按下c
开始配置,耐心等待配置完成。
目前由于线上环境的cmake和ccmake版本不匹配,ccmake版本过低导致无法配置。
解决方案:正常按下c即可,ccmake会提示版本过低,此时按下e退出提示界面,再按下q退出ccmake的TUI界面,再去执行cmake命令。
1
| cmake ../InsightToolkit-5.2.1
|
在ccmake中的配置,会由于按下了c而得以保存,故执行cmake的时候会沿用在ccmake中更改后的配置项。
后面所有关于cmake的配置都需要如此执行,以下不再赘述。
第二次配置
第一次配置完成后再次执行ccmake,并按下t
进入高级模式。
1
| ccmake ../InsightToolkit-5.2.1
|
打开编译动态链接库的选项。
按下Page Down翻到下一页,或者使用方向键下键也可以翻页,改动如图。
这里的CMAKE_INSTALL_PREFIX
指定到前期准备过程中创建的ITK安装目标路径中。
再次按下c
进行配置。
第三次配置(视情况而定)
再次执行ccmake命令,按t
进入高级模式,检查所有之前改动过的配置项。
如果发现所有的配置项都是已经更改过的状态,就可以按q
退出,不进行配置。
如果发现有些配置被恢复为了默认状态,则需要再次更改后再进行配置,知道所有配置项都符合要求。
Make构建
配置完成后,直接在ITK-build
目录下执行make
命令。
加上参数-jN
开启多线程以加速编译
安装
make构建结束后,在同一目录下执行安装命令。
到此ITK就安装完成了。
安装完成后,需要将ITK的链接库文件导入环境变量中。
1
| export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/bisheng_tester2/Example/ITK-install/lib
|
执行该语句时,切记不要忘记加上$LD_LIBRARY_PATH
,否则会将当前的环境变量覆盖掉,导致线上环境出现问题。
VS Code接入远程环境
前期准备
下载Remote - SSH插件。
配置文件如下。
1 2 3 4 5 6
| Host BiSheng HostName 10.8.3.1 User bisheng_tester2 Port 22 IdentityFile "...\id_rsa"
|
最后一项IdentityFile
指向配置Open VPN时用到的私钥。
提前在线上环境创建一个放置代码的文件夹,在VS
Code中打开远程文件夹。
配置
c_cpp_properties.json
按下Ctrl + Shift + P
,在弹出的窗口中选择C/C++:编辑配置(UI)。
选择编译器路径。
往下翻页,找到包含路径配置项,配置到与图中一致。
该路径请指向自己安装的ITK目录。
此时在文件夹中生成了一个.vscode
文件夹,其中有一个c_cpp_properties.json
配置文件。
内容与刚才的配置对应。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/data/bisheng_tester2/Example/ITK-install/include/**" ], "defines": [], "compilerPath": "/home/bisheng_tester2/Ascend/ascend-toolkit/latest/aarch64-linux/bisheng_cpp/bin/clang++", "cStandard": "c17", "cppStandard": "c++14", "intelliSenseMode": "linux-clang-arm64" } ], "version": 4 }
|
tasks.json
任意新建一个cpp文件并打开。
点击菜单栏终端 -> 配置任务
,在弹出的窗口中选择clang++
此时在.vscode
文件夹中会生成一个tasks.json
配置文件,修改编译器的参数如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| { "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: clang++ 生成活动文件", "command": "/home/bisheng_tester2/Ascend/ascend-toolkit/latest/aarch64-linux/bisheng_cpp/bin/clang++", "args": [ "-fsycl", "-fsycl-targets=ascend_910-cce", "-fcolor-diagnostics", "-fansi-escape-codes", "-g", "-gdwarf", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-I", "/data/bisheng_tester2/Example/ITK-install/include/ITK-5.2", "-L", "/data/bisheng_tester2/Example/ITK-install/lib", "-lxxx" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "编译器: /home/bisheng_tester2/Ascend/ascend-toolkit/latest/aarch64-linux/bisheng_cpp/bin/clang++" } ] }
|
launch.json
点击菜单栏运行 -> 添加配置
,此时会在.vscode
文件夹下生成一个launch.json
,点击右下角的添加配置。
选择(gdb) 启动。
修改配置文件如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| { "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] }
|
到此VS Code的配置就完成了。
Demo
在刚才创建的cpp文件中,写一个小Demo。
1 2 3 4 5 6 7 8 9 10 11
| #include <iostream> #include <vnl/vnl_matrix.h>
int main() { vnl_matrix<int> A(100, 100, 1);
std::cout << A << std::endl;
return 0; }
|
点击菜单栏终端 -> 运行生成文件
,或直接按快捷键Ctrl + Shift + B
进行编译。终端输出如下。
此时点击右上角的调试或运行,在弹出的窗口中选择刚才配置的launch
任务,即可执行该Demo。
如果提示如下报错信息。
1
| error while loading shared libraries: libitkvnl-5.2.so.1: cannot open shared object file: No such file or directory
|
则需要在VS
Code的终端中将ITK的链接库路径添加至环境变量中,参考ITK安装步骤的最后一步。
Demo执行结果如下。