我知道如何使用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缺陷,还是有其他方法来完成它?
发布于 2020-11-14 14:25:09
不是一个回答,而是太多,不适合在一个评论。
除了cmake之外,我对OpenMP一无所知:https://cmake.org/cmake/help/latest/module/FindOpenMP.html?highlight=openmp。
我没有看到任何涉及静态/共享的文档。也许你是对的,它只支持共享的语言。
问官方话语的双重检查:https://discourse.cmake.org/
您也可以尝试阅读官方的FindOpenMP.cmake模块,因为这都是开源的。
编辑:
如果您是正确的,则cmake缺少此功能,请考虑贡献并添加它:)
https://stackoverflow.com/questions/64834219
复制相似问题