如何在不关闭SIP的情况下在macOS Catalina上生成编译数据库?

时间:2019-12-29 22:38:37

标签: macos makefile compilation clang++ macos-catalina

我已经尝试BearCompileDB从makefiles生成编译数据库JSON。但是,事实证明它们都在我的Mac上生成了无用的空JSON文件。

Bear在其已知问题列表中确认此问题。

  

不同操作系统上的安全扩展/模式可能会禁用库预加载。在这种情况下,Bear的行为正常,但是结果编译数据库将为空。 (请确保在报告错误时不是这样。)启用的安全模式的著名示例包括:OS X 10.11(使用csrutil status | grep 'System Integrity Protection'检查)和Fedora,CentOS,RHEL(使用sestatus | grep 'SELinux status'检查)。

现在,仅为了运行一个小程序而关闭SIP并不是一个好的解决方法。您是否知道我可以从给定的makefile生成编译数据库的任何其他方式?

1 个答案:

答案 0 :(得分:0)

您是否调查了为什么compileb失败?最简单的是,它解析在构建时make“打印”出来的编译命令。

如果您有make --print-directory -n的输出,则还可以在这里生成json文件:https://texttoolkit.com/compilation-database-generator,它的工作原理基本上类似于compiledb,但它是一个Web应用程序。