C++11 cmake g++-5:c++;11和OpenMP支持
在Mac pro上,我安装了g++C++11 cmake g++-5:c++;11和OpenMP支持,c++11,cmake,openmp,C++11,Cmake,Openmp,在Mac pro上,我安装了g++ brew安装gcc——不带多库 然后我在/usr/local/bin 编译器支持OpenMP和c++11 以下代码按预期编译和运行: #include <iostream> int main(int argc, const char **argv) { auto i = 42; int arr[] = {1,2,3,4,5}; for(int& e
brew安装gcc——不带多库
然后我在/usr/local/bin
编译器支持OpenMP和c++11
以下代码按预期编译和运行:
#include <iostream>
int main(int argc, const char **argv)
{
auto i = 42;
int arr[] = {1,2,3,4,5};
for(int& e : arr)
{
e = e*e;
}
#pragma omp parallel
{
std::cout << "Hello OpenMP!\n";
}
return 0;
}
但是,
cmake -DCMAKE_CXX_COMPILER=g++-5 -DCMAKE_C_COMPILER=gcc-5 ..
告诉我找不到OpenMP(缺少:OpenMP\U CXX\U标志)
编译器/usr/local/bin/g++-5不支持C++11
对于OpenMP,我使用查找包(OpenMP)
,对于c++11,我使用
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
你知道怎么解决这个问题吗?一种解决方法是,即使检查失败,也只需放置c++11和
-fopenmp
标志。效果很好。但是,我希望有一个更好的解决方案。在运行cmake-DCMAKE\u CXX\u COMPILER=g++-5-DCMAKE\u C\u COMPILER=gcc-5..之前,您是否刮取了构建目录?这可能与“是”中的问题相同。看来就是这样了。它现在可以工作了。顺便说一下,您可以使用设置目标属性(一些目标属性CXX\U STANDARD 11 CXX\U EXTENSIONS FALSE CXX\U STANDARD\U REQUIRED TRUE)
对C++11进行更健壮的检查。需要CMake 3.1+。在运行CMake-DCMAKE\u CXX\u COMPILER=g++-5-DCMAKE\u C\u COMPILER=gcc-5..
之前,是否已清除生成目录?这可能与“是”中的问题相同。看来就是这样了。它现在可以工作了。顺便说一下,您可以使用设置目标属性(一些目标属性CXX\U STANDARD 11 CXX\U EXTENSIONS FALSE CXX\U STANDARD\U REQUIRED TRUE)
对C++11进行更健壮的检查。需要CMake 3.1+。
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)