Как установить флаги g++ с помощью cmake, чтобы gprof мог разобраться?

Как установить флаги gprof для компилятора и компоновщика GNU g++ в CMakeLists.txt?

Мой текущий подход,

set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -pg")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -pg")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} -pg")

не позволяет gprof разбирать функции C++. Есть идеи? (Я использую C++11)

1 ответ

Попробуйте использовать:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")

Это должно добавить флаги для компиляции и ссылки, и использовать после выполнения программы:

gprof ./my_exe

Если вы получаете сообщение об ошибке вроде:

gmon.out: No such file or directory

Это означает, что компиляция не добавила информацию профилирования должным образом.

Серия событий здесь должна работать следующим образом:

1º Compile code with -pg option
2º Link code with -pg option
3º Run program
4º Program generates gmon.out file
5º Run gprof
Другие вопросы по тегам