苹果链接器警告:“ld: 警告:-undefined error 已弃用”

4
目前在我们的 macOS C++ 构建中看到这个链接器警告:
[build] [430/431  99% :: 9.484] Linking CXX executable foobar
[build] ld: warning: -undefined error is deprecated

我们在我们的CMakeLists.txt文件中设置了这个链接器选项:
add_link_options("-Wl,-undefined,error")
ld 链接器的 man 手册也没有提供有用的信息:
-undefined treatment
    Specifies how undefined symbols are to be treated. Options are: error, warning, suppress,
    or dynamic_lookup.  The default is error. Note: dynamic_lookup that depends on lazy binding
    will not work with chained fixups.

我不清楚为什么这个已经被弃用,以及我应该采取的行动。

2
XCode 15 包含了全新的链接器实现。因此,一些标志已被弃用。默认设置为错误 - 您可以简单地取消此显式标志设置。 - undefined
谢谢 @273K,这解决了我的问题并简化了我的CMake代码。如果你把这个评论变成一个答案,我会接受它。 - undefined
1个回答

2
XCode 15 包含了全新的链接器实现。因此,一些标志已经被弃用。
而且,由于编译器和全新的链接器针对 Apple silicon 的多核架构进行了优化,项目构建速度更快。
正如您在 ld 手册中所引用的,-undefined 的默认处理方式是 error - 您可以在 cmake 中简单地取消这个显式的标志设置。
另外,请记住您仍然可以使用 -ld64 标志显式请求旧的/经典的链接器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接