2016-05-02 2 views
0

Я использую qSetMessagePattern для форматирования вывода.qSetMessagePattern ("% {file} (% {line}):% {message}") output "unkown (0)"

Странная вещь, даже я поставил %{file} и %{line}, я мог получить только unknown и 0 в моем выходе. И так же %{function}. Источник и выход ниже:

qSetMessagePattern("%{file}(%{line}): %{message}"); 
qDebug() << "msg"; 

выход:

unknown(0): msg 

Любые идеи? Благодаря!

+0

Просто для подтверждения: вы строите в режиме отладки, верно? –

+0

Думаю, что да. Я использую 'install (TARGETS my_exe DESTINATION $ {install_dir} CONFIGURATIONS Debug)' в CMakeLists.txt и 'make install' для установки моего исполняемого файла. –

ответ

0

добавить DEFINES += QT_MESSAGELOGCONTEXT к вашему xxx.pro, , а затем восстановить

make clean && make distclean && qmake && make 

Я надеюсь, что это может помочь вам.

+0

Он использует CMake. Этот совет по-прежнему звучит, но обратите внимание, что есть хорошая причина для удаления исходной информации в сборках релизов (они утечки информации о вашем приложении) – peppe

+0

Спасибо за ваше напоминание, Это CPPFLAGS в qmake. Поэтому добавьте set (CMAKE_CXX_FLAGS "-DQT_MESSAGELOGCONTEXT") в CMake – Jiahao

0

Попробуйте добавить к цели вы строите:

target_compile_definitions(${PROJECT_NAME} PRIVATE -DQT_DEBUG -DQT_MESSAGELOGCONTEXT) 

Кажется -DQT_DEBUG имеет приоритет при использовании вместе с -DQT_NO_DEBUG.