2014-05-09 13 views
5

Wie setze ich die gprof Flags für den Compiler und Linker von GNU g ++ in einer CMakeLists.txt?Wie setze ich Flags von g ++ mit cmake, so dass gprof es ablehnen kann?

Mein aktueller Ansatz,

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") 

nicht erlaubt gprof die C++ Funktionen demangle. Irgendwelche Ideen? (Ich bin mit C++ 11)

+0

alles, was benötigt wird, um eine Funktion demangle ist der Name der Funktion selbst, Sie können keine zusätzlichen g ++ Flaggen hinzufügen AFAIK zu helfen. –

Antwort

5

Versuchen Sie es mit:

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") 

Das Flags müssen hinzufügen kompilieren und verknüpfen und verwenden, nachdem Sie das Programm aus:

gprof ./my_exe 

Wenn Sie eine bekommen Fehler wie:

gmon.out: No such file or directory 

Das bedeutet, dass die Kompilierung Profilinformationen nicht hinzugefügt hat.

Die Veranstaltungsreihe hier soll wie folgt funktionieren:

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