如何使用cmake设置g ++的标志,这样gprof可以解码?

时间:2014-05-09 08:43:28

标签: g++ cmake gprof demangler

如何在CMakeLists.txt中为GNU g ++的编译器和链接器设置gprof标志?

我目前的做法,

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 个答案:

答案 0 :(得分:5)

尝试使用:

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