Подбор ключей компиляции основан на измерениях характеристик во время выполнения программы. На первом этапе создаётся исполняемый файл program, в который включается информация для профилировки. Ключ -fprofile-generate=data/pgo указывает, что нужно собирать информацию и сохранять в каталог data/pgo. Компиляцию следует выполнять в последовательном режиме.

env CXXFLAGS='-fprofile-generate=data/pgo' cmake .. -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles"
make -j1

После компиляцию программу следует выполнить, придерживаясь типичного сценария использования.

./program

Скомпилировать программу с использованием полученной статистики. Для многопоточной программы следует указать флаг -fprofile-correction, чтобы скорректировать данные, которые могут неустойчивыми из-за пропусков обновлений счётчиков. Компиляцию следует выполнять в последовательном режиме.

env CXXFLAGS='-fprofile-use=data/pgo -fprofile-correction' cmake .. -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles"
make -j1