微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 LLVM clang 编译调试静态库

如何解决如何使用 LLVM clang 编译调试静态库

我正在编译一个迭代器调试级别为 2 的静态库(在本例中为 Rive),以与我在该项目中的所有其他静态库兼容。工具集是 Windows 上的 LLVM clang,面向 x64。

旁注:Rive 项目使用的构建系统 (premake5) 与我编译的其他使用 cmake 的构建系统不同。

我在编译 #error _IteraTOR_DEBUG_LEVEL > 1 is not supported in release mode. 时遇到错误。但是,据我所知,我不是在发布模式下编译。为什么我可能会收到有关“发布模式”的错误消息?

这是一个示例编译器命令:

clang++   -MMD -MP -D_USE_MATH_DEFInes -DDEBUG -D_IteraTOR_DEBUG_LEVEL=2 -I../include -m64 -g -std=c++17 -Wall -fno-exceptions -fno-rtti -MTd  -o \"obj/debug/cubic_asymmetric_vertex_base.o\" -MF \"obj/debug/cubic_asymmetric_vertex_base.d\" -c \"../src/generated/shapes/cubic_asymmetric_vertex_base.cpp\"",...)

据我所知,-g 正在生成调试符号,而 -MTd 指定调试静态库。为什么错误告诉我我处于发布模式?

解决方法

以下两件事结合起来为我解决了这个问题:

  1. 传入标志 _DEBUG 和 DEBUG
  2. 使用 PowerShell 而不是 bash 运行 make

这允许我在调试模式下编译静态库,_ITERATOR_DEBUG_LEVEL 为 2。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。