我们有一个针对 Xcode 的基于 CMake 的项目,并且必须包含一个预编译的第三方库,该库提供单独arm64
的x86_64
二进制文件。
我们现在所做的是简单地附加两个二进制文件,如
add_library( someLib INTERFACE )
add_library( someLib_x64 STATIC IMPORTED )
set_target_properties(
someLib_x64
PROPERTIES
IMPORTED_LOCATION_RELEASE "path/to/x64/libsomeLib.a"
)
add_library( someLib_arm STATIC IMPORTED )
set_target_properties(
someLib_arm
PROPERTIES
IMPORTED_LOCATION_RELEASE "path/to/arm/libsomeLib.a"
)
target_link_libraries(
someLib
INTERFACE
someLib_x64
someLib_arm
)
这似乎导致两种架构的有效编译(为“Any Mac(Apple Silicon,Intel)”构建),但是当每个架构抱怨另一个架构时,它会导致一堆链接器警告。
ld: warning: ignoring file /path/to/x64/libsomeLib.a, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
反之亦然。
有什么更准确的方法可以避免链接器警告?我找不到适用的生成器表达式来更改链接路径?