macos - CMake 支持 macOS High Sierra 上的 OpenMP

标签 macos cmake openmp

我正在尝试将 OpenMP 添加到使用 CMake 构建的项目中。我在使用标准 CMake/OpenMP 添加的 Linux 上构建它没有问题:

find_package(OpenMP)
if (OPENMP_FOUND)
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
    set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} 
${OpenMP_EXE_LINKER_FLAGS}")
endif()

不幸的是,这似乎不适用于 macOS 目标。调用cmake时报错如下:

-- Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS) 
-- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS) 
-- Could NOT find OpenMP (missing: OpenMP_C_FOUND OpenMP_CXX_FOUND) 

我正在使用 macOS High Sierra (10.13.3) 和 CMake 3.11。我已经通过 brew 安装了 OpenMP 5.01,'brew install libomp'。我发现以前的一些帖子评论了关于这三个问题的问题,但它们似乎都涉及以前在 macOS 上安装 OpenMP 的方法,“brew install clang-omp”。

我认为这可能与 CMake 不支持此 OpenMP 安装有关,因为我可以使用标准 makefile 毫无问题地使用 OpenMP。提供的任何信息将不胜感激。

最佳答案

我已经能够回答我自己的问题(很抱歉没有事先弄清楚这一点,希望这可以帮助其他人解决同样的问题)。

似乎已经向 CMake 提交了一个补丁,允许它使用新的 OpenMP 安装正确创建构建系统:https://gitlab.kitware.com/cmake/cmake/merge_requests/1812

如果其他人在未来看到这一点,请更新到 CMake 3.12(如果它在阅读时已发布)。

关于macos - CMake 支持 macOS High Sierra 上的 OpenMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49738961/

相关文章:

c - libconfig:使用 CMake 编译时出错

macos - startAccessingSecurityScopedResource() 实际上是做什么的?

macos - OSX 文件系统事件 - 单元测试

c++ - 如何进行单元测试(使用 CMake 和 GTest)来了解测试数据的文件夹在哪里?

android - Gradle 无法使用 OBJECT 库构建 CMake 项目,因为它需要一个输出文件

c++ - 为什么使用 openMP 的 VC++ 矩阵时间 vector 比异步更快?

c++ - 编译器优化消除了错误共享的影响。如何?

android - 如何从 OSX 上的 Wireshark 中的 Android 模拟器获取 tcpdump 的实时 View ?

cmake - 避免在 Conan 配置文件和 CMake 之间重复配置

multithreading - 使用 Cython 启用并行性