如果链接到openmp,如何使用gcc预编译头文件

时间:2018-05-03 14:09:28

标签: gcc g++ openmp precompiled-headers

最小例子:

// file: main.cpp
#include "pch.h"

int main()
{
    std::cout << "test" << std::endl;
    return 0;
}

-

// file: pch.h
#include <iostream>

如果我用

编译它,可以正常工作并且符合预期
g++ pch.h
g++ main.cpp -Winvalid-pch

但是,一旦我将最后一行更改为:

g++ main.cpp -fopenmp -Winvalid-pch

禁用预编译头的使用:

warning: pch.h.gch: not used because `_REENTRANT' is defined [-Winvalid-pch]

如何在链接到OpenMP时仍然使用预编译的头文件?为什么_REENTRANT定义与使用预编译头完全冲突?

1 个答案:

答案 0 :(得分:0)

您必须生成.pch并使用相同的标志编译源代码。 -fopenmp隐含#pragma omp-pthread

g++ -fopenmp pch.h
g++ main.cpp -fopenmp -Winvalid-pch

或者至少

g++ -pthread pch.h
g++ main.cpp -fopenmp -Winvalid-pch