在C++中使用日志库打印日志时,有时候需要附带日志相关的源文件信息,可能会使用如的宏:
- __FILE__
- __LINE__
- __FUNCTION__
打印日志的效果可能如下:
日志中会附带长长的源文件的全路径,有点难看,文件名是由**__FILE__**宏输出来的,
那么,通过重新定义__FILE__即可解决,如下:
-U__FILE__ -D__FILE__='"$(subst $(dir $<),,$<)"'
通过修改g++的flags即可解决,
CxxFALGS += -U__FILE__ -D__FILE__='"$(subst $(dir $<),,$<)"'
当然,在CMakeLists.txt文件中解决的方法也是类似的,增加如下命令:
编译后,输出的结果如下:
在不影响性能的前提下,清爽了很多。
网上很多的方法是在运行进解决,这种方法千万不要尝试,对性能有较大的影响。