8

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 を使用しています)

4

1 に答える 1

11

使用してみてください:

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
于 2014-10-30T15:26:17.827 に答える