2014-05-09 12 views
5

Bir CMakeLists.txt dosyasında GNU g ++ derleyicisinin ve bağlayıcılarının gprof bayraklarını nasıl ayarlayabilirim? gprof'un dizilişini oluşturacak şekilde cmake kullanarak g ++ 'nin bayrakları nasıl ayarlanır?

Bulunduğum yaklaşım

,
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++ fonksiyonları demangle izin vermez. Herhangi bir fikir?

+0

Bütün göre, afaik yardımcı olmak için ekstra g ++ bayrakları işlev adı kendisi ekleyemezsiniz bir işlevi demangle için gereklidir. –

cevap

5

kullanmayı deneyin (C++ 11 kullanıyorum):

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") 
derlemek ve bağlantı ve yürütme sonra programı kullanmak için bayraklar eklemelisiniz

: Bir alırsanız

gprof ./my_exe 

hata gibi:

gmon.out: No such file or directory 

Bu, derlemenin profillentasyon bilgisini propertly olarak eklemediği anlamına gelir.

burada olaylar dizisi aşağıdaki gibi çalışmak gerekiyordu:

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