Как использовать скомпилированные заголовки с gcc при линковке с openmp - PullRequest
0 голосов
/ 03 мая 2018

Минимальный пример:

// 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 голосов
/ 12 мая 2018

Вы должны генерировать .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
...