这篇内容记录了有关cmake配置问题的解决方案。
问题1. 安装好 Ubuntu 之后马上就报错:0x800701bc
安装 ubuntu 执行的代码如下:
1
| wsl --install -d ubuntu 20.04
|
这个时候首先检查启用或关闭 Windows 功能
里面是否已经打开了:
- 适用于 Linux 的 Windows 子系统
- 虚拟机平台
这两个安装好之后需要重启电脑生效。然后点击下面这个链接:Linux Update Setup 并点击安装。安装好之后就没问题了。
问题2. 安装 Eigen 库始终失败:找不到 EigenConfig.cmake
这个问题主要是因为下载得到的 Eigen 库代码是源码,是需要经过编译的。
在下载好的 Eigen 库源码文件夹下执行以下代码:
1 2 3 4
| sudo mkdir build cd build sudo cmake .. (sudo make install)
|
最后一行打了括号,因为我目前使用的是 win11 的平台,没有make
这个函数指令。但是在ubuntu上应该是需要这个的。
问题3. 使用清华源
这里因为清华源有开发目前 WSL 常用的所有版本对应的源链接,所以留一下这个网址备忘。
ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
问题4. 安装必要的库,安装OpenCV
首先是最基本构建工程需要的一些库:
1 2 3 4 5
| sudo apt install -y g++ sudo apt install -y cmake sudo apt install -y make sudo apt install -y wget sudo apt install -y unzip
|
然后是opencv
依赖的必需品:
1
| sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
|
OpenCV 官网链接点击 Github 链接进行包内容的下载。直接下载在~/
的地方就可以了。
问题5:CMake安装OpenCV时卡在 IPPICV
在下面这个链接里下载这个文件:
链接: https://pan.baidu.com/s/1C05qBz-eSAUIxdwljce0kw 密码: 4q33
上面这个方式试了一下感觉不是很有用。于是反复执行原来的 make 函数,成功编译好了。
1
| cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
|
Note: 记录 ssh 基本操作
1 2 3 4
| git config --global user.name "" git config --global user.email "" ssh-keygen -t rsa -C "" vim ...(id_rsa.pub)
|
问题6:clone 仓库的时候报错
报错具体内容:remote: Support for password authentication was removed
改用 git-ssh 而非 HTTPS 进行 clone 就好了。
update: 有的仓库没有 git-ssh,第二种解决办法是开一下梯子。
问题7:在对应目录下使用code .
命令不生效
在 ubuntu 的终端中使用如下命令:
然后找到原本电脑上安装好的 VS Code 的目录下的 /bin
目录,在我的电脑上就是D:\Program Files (x86)\Microsoft VS Code\bin
,切换成/mnt/d/...
的语法,在.bashrc
中添加这一行:
1
| export PATH="$PATH:/mnt/e/program/VSCode/Microsoft VS Code/bin"
|
重启 ubuntu 终端并重新执行原命令即可。
问题8:安装 yaml-cpp
1 2 3 4 5 6
| git clone https://github.com/jbeder/yaml-cpp.git cd yaml-cpp mkdir build && cd build cmake -D BUILD_SHARED_LIBS=ON .. make -j16 sudo make install
|
python 中的 yaml 包
需要安装的是:conda install pyyaml
问题9:找不到 “omp.h”
OpenMP
库是随着cpp一起安装的,不需要额外安装其他东西。但实际上还是有依赖的库是一定要安装好的,否则还是无法使用这个库。
1
| sudo apt install -y libomp-dev
|
问题10:VSCode 配置 Clangd
可以跟着为vscode配置Clangd CSDN博客 这篇文章做。其中涉及到的代码在这里也可以复制,就不用再去登录 CSDN。
settings.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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| { "files.associations": { "iostream": "cpp", "intrinsics.h": "c", "ostream": "cpp", "vector": "cpp" }, // 开启粘贴保存自动格式化 "editor.formatOnPaste": true, "editor.formatOnSave": true, "editor.formatOnType": true, "C_Cpp.errorSquiggles": "Disabled", "C_Cpp.intelliSenseEngineFallback": "Disabled", "C_Cpp.intelliSenseEngine": "Disabled", "C_Cpp.autocomplete": "Disabled", // So you don't get autocomplete from both extensions. "clangd.path": "/usr/bin/clangd", // Clangd 运行参数(在终端/命令行输入 clangd --help-list-hidden 可查看更多) "clangd.arguments": [ // 让 Clangd 生成更详细的日志 "--log=verbose", // 输出的 JSON 文件更美观 "--pretty", // 全局补全(输入时弹出的建议将会提供 CMakeLists.txt 里配置的所有文件中可能的符号,会自动补充头文件) "--all-scopes-completion", // 建议风格:打包(重载函数只会给出一个建议) // 相反可以设置为detailed "--completion-style=bundled", // 跨文件重命名变量 "--cross-file-rename", // 允许补充头文件 "--header-insertion=iwyu", // 输入建议中,已包含头文件的项与还未包含头文件的项会以圆点加以区分 "--header-insertion-decorators", // 在后台自动分析文件(基于 complie_commands,我们用CMake生成) "--background-index", // 启用 Clang-Tidy 以提供「静态检查」 "--clang-tidy", // Clang-Tidy 静态检查的参数,指出按照哪些规则进行静态检查,详情见「与按照官方文档配置好的 VSCode 相比拥有的优势」 // 参数后部分的*表示通配符 // 在参数前加入-,如-modernize-use-trailing-return-type,将会禁用某一规则 "--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*,modernize-*,google-*", // 默认格式化风格: 谷歌开源项目代码指南 // "--fallback-style=file", // 同时开启的任务数量 "-j=2", // pch优化的位置(memory 或 disk,选择memory会增加内存开销,但会提升性能) 推荐在板子上使用disk "--pch-storage=disk", // 启用这项时,补全函数时,将会给参数提供占位符,键入后按 Tab 可以切换到下一占位符,乃至函数末 // 我选择禁用 "--function-arg-placeholders=false", // compelie_commands.json 文件的目录位置(相对于工作区,由于 CMake 生成的该文件默认在 build 文件夹中,故设置为 build) "--compile-commands-dir=build" ], }
|
问题11:VSCode 配置 gdb 调试
我的配置文件launch.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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| { "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/bin/bSSFPSeq", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "logging": { "traceResponse": true }, "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] }, { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "lldb", "miDebuggerPath": "/usr/bin/gdb.exe", "preLaunchTask": "C/C++: g++-11 生成活动文件" } ] }
|
请记住,在使用之前确保已经安装好了gdb
。Ubuntu 的确是自带一个 gdb 调试工具,但那个几乎没用,因为缺乏必要的包工具。
1
| sudo apt-get install gdb
|
问题11:Linux 安装 Miniconda
我使用 python 来生成序列结点文件,为此我还是需要安装一个miniconda
的。
下载:
1
| wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.8.3-Linux-x86_64.sh --no-check-certificate
|
安装:
1
| bash Miniconda3-py38_4.8.3-Linux-x86_64.sh
|
修改~/.bashrc
:
vim 打开,在这个文件的最后加入一行:
1
| export PATH=$PATH:/home/用户名/anaconda3/bin
|
保存退出,激活:
这个时候使用conda
命令才能看到确实已经激活。
但是即便如此,每次打开新的window的时候都需要使用上面这行代码,否则的话conda
命令就还是无效的。所以按照下面进行修改:
在~/.bash_profile
文件中添加如下代码:
1 2 3
| if test -f .bashrc ; then source .bashrc fi
|
重启后就发现确实生效了。不用再麻烦了。
换源:
在用户目录(~)下:
vim
打开,内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| channels: - defaults show_channel_urls: true channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
|
清除缓存:
检查是否换源成功:
问题12:Win11 安装 Miniconda
Miniconda — conda documentation 选择合适的版本,一路下一步,直到安装完毕。
1 2
| conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes
|
使用这个命令光速换源。
创建虚拟环境
因为我这边是直接安装在了C盘,接下来就需要在指定的工作区安装虚拟环境。一些常用的指令:
1 2 3 4
| // 更新 conda update conda // 查看现有的虚拟环境 conda info --envs
|
创建:
1
| conda create --prefix=D:/Study/venv -n venv python=3.8
|
删除的话似乎直接将虚拟环境所在的那个文件夹丢入垃圾桶就可以了。conda
列表将自动把那个环境扔掉。
但感觉似乎也没有必要在win的环境下再安装虚拟环境。
问题13:.gitignore
文件忽略不生效
原本是想将build
文件夹下的文件都忽略掉,但是使用了build/*
并没有任何作用。
原因:build
文件夹下的文件已经在本地缓存中被添加进入了结点,已经无法被忽略了。这个时候需要执行下面的代码,删除缓存:
然后按照原本的上传规则进行上传就好了。