您可以使用 BASH make 和 cmake 命令设置 C++ 标志吗?

您可以使用 BASH make 和 cmake 命令设置 C++ 标志吗?

我正在使用 MX Linux debian 10 (buster),所以我认为我无法更新编译器。有没有办法可以折旧或修改以使其向后兼容?例如,我正在尝试编译 Btop,但是当我运行时,make我收到错误 g++:

error: unrecognized command line option ‘-std=c++20’; did you mean ‘-std=c++2a’?

我可以在运行时添加一些标志或其他内容make,以便它作为旧版本的 g++ 运行进行编译吗?我搜索了所有代码,甚至找不到一行“c++20”。请注意,我不是程序员,所以我可能错过了。

注意,当我运行 时g++ -v,它说我正在运行版本 8.3.0,这似乎比 20 旧得多,除非我误解了它。

同样,我试图编译 tenacity (audacity 分支),当我运行时,cmake .我得到:

 CMake Error at CMakeLists.txt:12 (cmake_minimum_required):
  CMake 3.15 or higher is required.  You are running version 3.13.4

这也有解决办法吗?

非常感谢!

答案1

我正在使用 MX Linux debian 10 (buster),所以我认为我无法更新编译器。

当然可以。您可以从源代码(无论版本如何)编译 gcc 并在本地安装。尽管后者需要付出一些努力。

您还可以切换到新的 Debian 版本,这样就省去了您的精力。

[Btop] 我可以在运行 make 时添加一些标志或其他内容,以便它作为旧版本的 g++ 运行进行编译吗?

查看 Btop 的 Makefile,找出设置标志的内容(make -p有帮助),或者直接更改 Makefile,或者更改 Btop 用于生成 Makefile 的任何文件。

它说我运行的是 8.3.0 版本,看起来比 20 旧很多

这是关于C++标准版本,而不是关于gcc版本。看一下这张桌子查看哪个 gcc 版本支持哪个语言标准版本。

但这并不是说,如果 Btop 源代码确实使用了编译器不支持的标准中的功能,那么 Btop 的源代码显然无法编译。如果他们只是因为想要定义要使用的标准版本而将其放在那里,那么它仍然可以在旧标准下编译。

需要 CMake 3.15 或更高版本。您正在运行版本 3.13.4

与上面相同的问题:从源代码编译 Cmake,或升级您的 Debian 版本,以便您可以使用更新的软件包。

相关内容