# CMAKE_<LANG>_USING_LINKER_<TYPE>

Added in version 3.29.

This variable defines how to specify the `<TYPE>` linker for the link step, as controlled by the `CMAKE_LINKER_TYPE` variable or the `LINKER_TYPE` target property. Depending on the value of the `CMAKE_<LANG>_LINK_MODE` variable, `CMAKE_<LANG>_USING_LINKER_<TYPE>` can hold compiler flags for the link step, or the path to the linker tool.

Changed in version 4.0.

The type of information stored in this variable is now determined by the `CMAKE_<LANG>_LINK_MODE` variable instead of the `CMAKE_<LANG>_USING_LINKER_MODE` variable.

Note

The specified linker tool is generally expected to be accessible through the `PATH` environment variable.

For example, the `LLD` linker for `GNU` compilers is defined like so:

    # CMAKE_C_LINK_MODE holds value "DRIVER"
    set(CMAKE_C_USING_LINKER_LLD "-fuse-ld=lld")

On the `Windows` platform with `Clang` compilers simulating `MSVC` with `GNU` front-end:

    # CMAKE_C_LINK_MODE holds value "DRIVER"
    set(CMAKE_C_USING_LINKER_LLD "-fuse-ld=lld-link")

And for the `MSVC` compiler or `Clang` compilers simulating `MSVC` with `MSVC` front-end, the linker is invoked directly, not via the compiler front-end:

    # CMAKE_C_LINK_MODE holds value "LINKER"
    set(CMAKE_C_USING_LINKER_LLD "/path/to/lld-link.exe")

A custom linker type can also be defined, usually in a toolchain file:

    set(CMAKE_LINKER_TYPE lld_launcher)
    set(CMAKE_C_USING_LINKER_lld_launcher "-fuse-ld=/path/to/lld-launcher.sh")