如何使用cmake设置g ++的标志,以便gprof可以分解?

How to set flags of g++ using cmake such that gprof can demangle?

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

我目前的做法

1
2
3
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
2
3
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")

那必须添加标记以进行编译和链接,并在执行程序后使用:

1
gprof ./my_exe

如果出现类似以下错误:

1
gmon.out: No such file or directory

这意味着编译没有适当地添加分析信息。

这里的一系列事件应该按如下方式工作:

1
2
3
4
5
1o Compile code with -pg option
2o Link code with -pg option
3o Run program
4o Program generates gmon.out file
5o Run gprof