小编Mil*_*lan的帖子

如何在 VSCode 中禁用/关闭 3 路合并编辑器视图?

直到最近,在 VSCode 中,处理合并冲突都很简单(至少对我来说):

  • 接受当前更改,
  • 接受即将到来的变化,
  • 接受这两项更改,
  • 比较变化。

过去是这样的:

VSCode合并-冲突原始视图

来源

不过,从v1.70现在开始,它已经更新了。请参阅v1.70 发行说明

现在,它看起来像这样:

VSCode合并冲突新视图

来源

在这一点上,我不喜欢这个新观点。那么,如何才能将其关闭并改回原来的状态呢?

visual-studio-code vscode-git

36
推荐指数
2
解决办法
7909
查看次数

使用 ROS 设置 VScode 并自动完成

我正在努力使用 ROS 配置 VSCode 以具有自动完成功能。我习惯于在 Qt 和 OpenCV 中使用 VSCode,一切正常。例如,对于 OpenCV,我只是这样编辑c_cpp_propreties.json

{
"configurations": [
    {
        "name": "Linux",
        "includePath": [
            "${workspaceFolder}/**",
            "/usr/local/include/opencv4/opencv2"
        ],
        "defines": [],
        "compilerPath": "/usr/bin/gcc",
        "cStandard": "gnu11",
        "cppStandard": "gnu++14",
        "intelliSenseMode": "clang-x64"
    }
],
"version": 4
Run Code Online (Sandbox Code Playgroud)

}

OpenCV 的自动完成工作正常(我有C++ IntelliSense 扩展)。但后来,当我试图指定include从ROS在文件夹中c_cpp_propreties.json,没有什么作品了,甚至没有OpenCV的自动完成:

{
"configurations": [
    {
        "name": "Linux",
        "includePath": [
            "${workspaceFolder}/**",
            "/usr/local/include/opencv4/opencv2",
            "/opt/ros/melodic/include"
        ],
        "defines": [],
        "compilerPath": "/usr/bin/gcc",
        "cStandard": "gnu11",
        "cppStandard": "gnu++14",
        "intelliSenseMode": "clang-x64"
    }
],
"version": 4
Run Code Online (Sandbox Code Playgroud)

}

就像 ROS 正在阻止一切。我究竟做错了什么?我指定在 VSCode …

c++ intellisense autocomplete ros visual-studio-code

14
推荐指数
2
解决办法
2944
查看次数

CMake设置环境变量

根据CMake文档

https://cmake.org/cmake/help/v3.3/command/set.html

一个人可以做

set(ENV{<variable>} <value>)
Run Code Online (Sandbox Code Playgroud)

但这给出了结果

set(ENV{FOO} foo)
message("variable is $ENV{FOO}")
Run Code Online (Sandbox Code Playgroud)

在配置时

variable is foo
Run Code Online (Sandbox Code Playgroud)

但是在Linux命令中

echo $FOO
Run Code Online (Sandbox Code Playgroud)

该变量未设置。

编辑:

这是问题的部分解决方案,即设置$PATH,以便用户CMAKE_INSTALL_PREFIX首先列出

set(file_sh ${CMAKE_CURRENT_BINARY_DIR}/path.sh)
set(path "${CMAKE_INSTALL_PREFIX}:$ENV{PATH}")
file(WRITE ${file_sh} "#!/usr/bin/env bash\n")
file(APPEND ${file_sh} "export PATH=\"${path}\"")
execute_process(COMMAND chmod a+x ${file_sh} RESULT_VARIABLE res)
Run Code Online (Sandbox Code Playgroud)

这会创建这个文件

#!/usr/bin/env bash
export PATH="/install/prefix/path:/other/path"
Run Code Online (Sandbox Code Playgroud)

稍后可以在 bash 终端上执行

source path.sh
Run Code Online (Sandbox Code Playgroud)

linux cmake environment-variables

11
推荐指数
1
解决办法
5万
查看次数

如何在笛卡尔坐标中使用 RANSAC 拟合一条线?

我正在使用 2D 激光雷达,并以相对于激光雷达位置的角度和距离的形式获取数据。我必须使用激光雷达创建平面图,下面给出的数据代表一个房间。我想使用 RANSAC 算法来查找房间的墙壁。如果我能装上 RANSAC,那么我相信我能以某种方式找到地板法兰。我写了一个代码,但它不适合我的墙。我应该做哪些修改才能让它适合我的房间墙壁?

#(angle, distance)
0,942
0.62,3469
1.25,3350
2.5,3410
3.12,3404
3.75,3403
4.37,3464
5,3441
5.62,3445
6.25,3444
6.87,3455
7.5,3464
8.12,3464
8.75,3477
9.37,3470
10,3504
10.62,3505
11.25,3505
11.87,3516
12.5,3529
13.12,3541
13.75,3543
14.37,3552
15,3559
15.62,3565
16.25,3578
16.87,3591
17.5,3607
18.12,3624
18.75,3634
19.37,3630
20,3651
20.62,3673
21.25,3678
21.87,3697
22.5,3711
23.12,3726
23.75,3744
24.37,3765
25,3780
25.62,3796
26.25,3809
26.87,3830
27.5,3867
28.12,3881
28.75,3854
29.37,3751
30,3689
30.62,3637
31.25,3589
31.87,4029
37.5,3483
50,2734
53.75,1686
54.37,1656
55,1631
55.62,1621
56.25,1608
56.87,1600
57.5,1595
58.12,1598
58.75,1596
59.37,1604
60,1611
60.62,1622
61.25,1644
61.87,1673
65,2212
65.62,2221
66.25,1037
66.87,1299
67.5,2086 …
Run Code Online (Sandbox Code Playgroud)

python ransac scikit-learn

11
推荐指数
2
解决办法
2988
查看次数

如何解决 ImportError:Keras 需要 TensorFlow 2.2 或更高版本。通过“pip install tensorflow”安装TensorFlow?

当我尝试将 Keras 导入我的项目时出现此错误。

如何解决 ImportError:Keras 需要 TensorFlow 2.2 或更高版本。通过以下方式安装 TensorFlowpip install tensorflow

我验证了我为所有东西安装的版本(使用 pip),我有:

  • 蟒蛇 3.7.7
  • 张量流 2.2.0
  • keras 2.4.3

我已经链接了完整错误的图片。有一些关于 Dll 的东西,但我不确定这是否是造成错误的原因。

错误

python keras tensorflow

10
推荐指数
2
解决办法
3万
查看次数

如何修复 CMake 中的“找不到包配置文件...”错误?

我一直在开发一个使用rplidar_sdk 的项目,一开始我遇到了这个问题:

如何在我的 C++ 项目中链接本地安装的 SDK 的静态库?

基本上,SDK 在其本地目录中生成库,并且在其 中Makefile,它没有install规则。我的意思是我可以运行make,但在那之后,如果我运行sudo make install就会make: *** No rule to make target 'install'. Stop.出错。

因此,在这个这个答案的帮助下,我能够构建我的本地项目。到目前为止,一切都很好。

然而,主要问题是我必须对CMakeLists.txt我的存储库中的 RPLidar SDK 路径进行硬编码。现在,每当我团队中的其他人开始处理该存储库(这是非常明显的)时,他/她就必须更新第CMakeLists.txt一个。这不是一个好主意/做法!

为了解决这个问题,我更新了MakefileRPLidar SDK,如下所示:

.
.
.

RPLIDAR_RELEASE_LIB := $(HOME_TREE)/output/Linux/Release/librplidar_sdk.a

install: $(RPLIDAR_RELEASE_LIB)
    install -d $(DESTDIR)/usr/local/lib/rplidar/Release/
    install -m 644 $(RPLIDAR_RELEASE_LIB) $(DESTDIR)/usr/local/lib/rplidar/Release/


RPLIDAR_DEBUG_LIB := $(HOME_TREE)/output/Linux/Debug/librplidar_sdk.a

install: $(RPLIDAR_DEBUG_LIB)
    install -d $(DESTDIR)/usr/local/lib/rplidar/Debug/
    install -m 644 $(RPLIDAR_DEBUG_LIB) $(DESTDIR)/usr/local/lib/rplidar/Debug/


RPLIDAR_HEADERS …
Run Code Online (Sandbox Code Playgroud)

c++ linux makefile cmake

10
推荐指数
1
解决办法
3万
查看次数

VSCode C++ IntelliSense 工作正常,除了 PCL(点云库)

就SO本身而言,已经有很多关于VSCode IntelliSense的问题,例如que1que2que3等。但是,他们主要谈论IntelliSense一般不工作;不为 STL 工作;等等。

另一方面,就我而言,我已经在使用 Microsoft 的 VSCode C/C++ 扩展,并且 IntelliSense 对于所有不同的内置类、函数、STL 等都可以正常工作。但是,当涉及到PCL(点云库),不知何故,智能感知不起作用。

如果你熟悉的PCL话一定知道它的大部分语法都太大了。由于 IntelliSense 不起作用,如果您在键入每个字符时不密切注意,则很可能会出现拼写错误,例如,

pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
Run Code Online (Sandbox Code Playgroud)

事实上,即使是那些变量和函数的自动完成功能也不起作用——也就是说,从上面的例子来看,我point_cloud_ptr每次想使用它时都必须手动输入每个字符。

那么,我该如何解决这个问题呢?或者这是不可能的PCL

注意:我在Ubuntu 16Ubuntu 18上都面临这个问题。我已经PCL使用安装sudo apt install libpcl-dev,头文件位于/usr/include/目录中。

c++ intellisense point-cloud-library visual-studio-code

7
推荐指数
1
解决办法
1870
查看次数

begin() 如何知道要返回哪种返回类型(常量或非常量)?

这完美地工作:

list<int> l;
list<int>::const_iterator it;
it = l.begin();
list<int>::iterator it2;
it2 = l.begin();
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何list“知道”它必须返回iterator begin()版本或版本const_iterator begin() const

我正在尝试为我的容器(trie)实现迭代器,但我遇到了这个问题。难道 C++ 不应该通过返回类型来处理微分(除非使用奇怪的技巧)?

这是我得到的一些代码和编译器错误:

MyTrie<T>是一个可以包含任何类型的模板化树。我有一个Trie<int>::iter非常量迭代器和一个Trie<int>::const_iter常量迭代器。iter begin()const_iter begin() const在 Trie 类中声明(和定义)。

Trie<int> t;
Trie<int>::const_iter it;
it = t.begin();
Run Code Online (Sandbox Code Playgroud)

错误 :

../test/trie.cpp:181: error: no match for 'operator=' in 'it = Trie<T>::begin() [with T = int]()'
[..path..]/Trie.h:230: note: candidates are: Trie<int>::const_trie_iterator& Trie<int>::const_trie_iterator::operator=(const Trie<int>::const_trie_iterator&)
Run Code Online (Sandbox Code Playgroud)

所以,我相信begin不使用非常量版本。

我考虑operator=(const Trie<T>::const_trie_iterator&)为非常量迭代器创建一个方法,但我在 …

c++ iterator stl std

6
推荐指数
1
解决办法
2768
查看次数

VS Code - 如何在命令面板中通过完整路径打开文件?

我需要一些功能,例如:

VS Code -> F1 (打开命令面板) -> OpenFileFeature : /home/user/blablabla/code.py -> (Enter) -> (文件在编辑器中打开)

在这种情况下/home/user/blablabla/code.py可以是一个外部文件(相对于我在 VS Code 中打开的当前文件夹)。

有人知道这方面的一些技巧吗?

visual-studio-code vscode-settings

5
推荐指数
2
解决办法
2880
查看次数

如何在 GitHub 上的 Markdown 中使用具有垂直滚动功能的代码块?

我正在处理 GitHub 上的一个问题,为此,版主要求我在评论中分享某些 bash 命令的输出。我正在以代码块的形式共享请求命令的输出,并且我知道如何在 Markdown 中插入代码块:

The output of the command
.
.
.
Run Code Online (Sandbox Code Playgroud)

但是,上述语法的问题在于,如果命令输出有 500 行,那么它将在 Markdown 输出中显示所有 500 行。事实上,我的评论中总共有 3 个这样长的代码块。因此,代码块在我的评论中占用了大量空间,而且我的评论似乎太长了。

那么,有什么方法可以让我的代码块仅显示有限数量的行,并且具有特定于该块的滚动功能,例如它应该只显示 10 行,而对于其余的行,它应该具有垂直滚动。通过这个,我的评论不会看起来太长,版主也会关注我评论中的其他非命令文本(即代码块以外的内容)。

markdown github github-flavored-markdown

5
推荐指数
1
解决办法
2786
查看次数