静态编译库中的绝对路径删除

时间:2018-05-22 07:59:04

标签: c cmake

抱歉,我知道它重复了,它与question类似,但只有一个答案不符合目标:)

uamqp库的编译非常简单。我最终在eclipse中的项目中链接时使用了2个静态库。在运行时和发生错误时,错误消息显示最初编译静态库的路径。我得到这样的东西:

Error: Time:Tue May 22 09:04:45 2018 File:/home/hostname/azure-uamqp-c/src/saslclientio.c Func:on_underlying_io_error Line:243 Error callback received in unexpected state

我对错误消息没有任何问题。问题是只有在发生错误时才显示路径/home/hostname/azure-uamqp-c/saslclientio.c

请问如何编译uamqp库,以便不存储绝对路径?它是一个我必须配置的cmake命令选项吗?

由于

1 个答案:

答案 0 :(得分:0)

消息"在意外状态下收到错误回调"由LogError()调用发出,LogError宏最终uses预处理器表达式__FILE__用于引用源文件的路径。

根据that answer,表达式__FILE__扩展为path,它在编译器的命令行中传递。

不幸的是,在将源文件传递给编译器时,CMake always uses absolute paths。因此,在日志中生成相对路径有没有简单方法

您可以编写一个包装器,它将绝对路径转换为relative并调用编译器。