CMake:如何强制CMake到静态链接openmp
CMake: How can I force cmake to static link openmp?
我知道使用cmake以跨平台方式链接openmp的方法
find_package(OpenMP REQUIRED)
link_libraries(OpenMP::OpenMP_CXX)
但我不知道如何强制cmake静态链接openmp,事实上,所有关于openmp库的cmake官方变量都是动态
无论如何,非跨平台的方法是:
clang++ -std=c++2a test.cpp -Iinclude -march=native -O3 -c
clang++ test.o -o test.x /usr/local/lib/libomp.a -pthread
或者如果您使用gcc
g++-10 -std=c++2a test.cpp -Iinclude -march=native -O3 -c
g++-10 test.o -o test.x /usr/local/opt/gcc/lib/gcc/10/libgomp.a -pthread
顺便问一下,这是cmake缺陷还是有其他方法可以实现
不是一个答案,但太多了,无法放入评论中。
我对OpenMP一无所知,除了cmake确实支持它:https://cmake.org/cmake/help/latest/module/FindOpenMP.html?highlight=openmp.
我没有看到任何文档提到静态/共享。也许你是对的,它只支持共享的libs。
通过询问官方话语进行双重检查:https://discourse.cmake.org/
您也可以尝试阅读官方的FindOpenMP-cmake模块,因为这都是开源的。
编辑:
如果你是正确的,cmake缺乏这个功能,考虑贡献并添加它:(
相关文章:
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 将 SDL2 与 CMake 链接起来
- 找不到 CMake 链接的库
- 无法将 GTest 中的类与 CMake 链接
- NDK 将库与 cmake 链接
- 无法将提升库与 CMake 链接
- 如何使用 CMake 链接"numpy/arrayobject.h"
- CMake链接库在Docker映像中失败
- 使用cmake链接错误
- 如何使用CMake链接顶点?
- 无法在VS2017上将libclang与cmake链接
- 将枚举与 CMake 链接的正确方法是什么?
- 如何使用 cmake 链接库
- 将boost_numpy3与 CMAKE 链接
- CMake 链接 2 个具有相对路径的库
- Ogre 3D共享库与CMAKE链接时,在Linux上执行二进制时找不到
- 在 Android Studio 中使用 NDK、Gradle 和 CMake 链接外部库
- cmake链接错误2
- 无法通过 CMake 链接 Boost 1.63.0
- Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3