Clang++ 和 `-fuse-ld=gold` 导致许多未使用的选项警告

Clang++ and `-fuse-ld=gold` results in many unused option warnings

我正在尝试在 CMake 项目中将 gold 链接器与 clang++ 一起使用。如果我只是做

add_definitions(-fuse-ld=gold)

我收到大量警告,形式如下:

clang: warning: argument unused during compilation: '-fuse-ld=gold'

由于该选项适用于 link 阶段,因此将其添加到 linker flags,而不是 compiler 个。例如,您可以设置变量 CMAKE_EXE_LINKER_FLAGS:

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")

请注意,CMake 将 linker 相关的变量分离为不同的输出类型。变量 CMAKE_EXE_LINKER_FLAGS 仅影响 linking 可执行文件 (add_executable())。对于库,使用适当的 CMAKE_*_LINKER_FLAGS 变量:

  • CMAKE_STATIC_LINKER_FLAGS - 对于 STATIC
  • CMAKE_SHARED_LINKER_FLAGS - 对于 SHARED
  • CMAKE_MODULE_LINKER_FLAGS - 对于 MODULEs.