与CMake一起使用时的Log4cxx和完整文件路径

时间:2011-02-11 09:54:58

标签: cmake g++ c-preprocessor log4cxx

我正在使用Log4Cxx进行日志记录,我想使用%l指令来查看日志跟踪的位置(文件名和行号)。我遇到的问题是我也在使用提供full path names to the compiler的CMake。这导致日志列不再对齐,现在它们很难读取,因为log4cxx使用__FILE__预处理器宏来确定该信息。

有没有人知道任何解决方法?我想指定例如只使用嵌套参数获取“filename.cpp”或更好,例如2嵌套将是“module / submodule / filename.cpp”。似乎通过设计CMake使用完整路径哲学,所以我认为这可以通过使用未知的预处理器指令或以某种方式欺骗Log4CXX来解决。

1 个答案:

答案 0 :(得分:1)

看起来您可以尝试使用“ConversionPattern”来至少指定log4cxx的文件名输出的最大宽度:

http://logging.apache.org/log4cxx/apidocs/classlog4cxx_1_1_pattern_layout.html

或者在这里为ConversionPattern执行“查找页面”以获取配置文件示例:

http://logging.apache.org/log4cxx/index.html

根据文档,您应该在指定最大宽度时获取最右侧的字符。也许这与你在这里寻求的东西非常接近。

CMake始终将完整路径源文件名传递给编译器,以便调试符号引用正确的源文件(一方面)。使用完整路径名称可以更容易地保证所有平台上的工作无处不在。