【发布时间】:2020-05-30 18:08:37
【问题描述】:
我想在我的 cmake 项目中使用来自 c++17 标准库的并行排序(它是跨平台的,在 Linux 和 MSYS2 上运行良好)但是 Apple Clang's libc++ has not implemented it yet, while gnu's libstdc++ has。 mac上的cmake项目中如何使用gnu实现c++17的库?
【问题讨论】:
-
如果编译器不支持某些功能,那么 CMake 无法帮助它。不知道你想从我们这里得到什么......
-
是否可以使用 GNU 的标准库,也许使用
-stdlib=libstdc++? -
CMake 可能只是因为它用于配置编译器和库而相关,并且它可能具有我不知道的功能,这可能会有所帮助。
-stdlib=libstdc++似乎没有什么不同。在它工作的系统上,并行库使用include <execution>。在 Mac 上,这会导致fatal error: 'execution' file not found。 -
使用
glocate -r "/execution$",我在/usr/local/Cellar/gcc/9.2.0_1/include/c++/9.2.0/execution找到了一个执行标头,所以我添加了包含目录,但该标头包含其他丢失的文件,例如#include <bits/c++config.h>。 brew 的解决方案是安装一些库并添加适当的包含/链接标志吗?我正在为此寻找一个 brew 包,但找不到。 -
你想使用
gcc编译器而不是clang吗?如果是这样,只需将适当的CMAKE_CXX_COMPILER选项传递给 CMake。或者设置CXX环境变量。参见例如那个问题:stackoverflow.com/a/22619145/3440745.
标签: c++ macos cmake parallel-processing c++17