/ / O que significa bazel alwayslink = true? - c ++, bazel

O que significa bazel alwayslink = true? - c ++, bazel

Eu sou novo para bazel. Aqui está a explicação em doc bazel:

https://docs.bazel.build/versions/master/be/c-cpp.html#cc_library.alwayslink

alwayslink

Boleano; opcional; não configurável; o padrão é 0

Se 1, qualquer binário que depende (diretamente ouindiretamente) neste C ++ biblioteca irá ligar em todos os arquivos objeto para os arquivos listados no srcs, mesmo que alguns não contenham símbolos referenciados pelo binário. este é útil se o seu código não é explicitamente chamado pelo código no binário, por exemplo, se o seu código se registra para receber algum retorno de chamada fornecido por alguns serviço.

Eu não entendo muito bem a última frase: e.g., if your code registers to receive some callback provided by some service. Alguém pode dar e exemplo? Obrigado!

Respostas:

1 para resposta № 1

por exemplo, se o seu código se registra para receber algum retorno de chamada fornecido por algum serviço.

AIUI, este é o caso quando o cc_binary cria uma biblioteca compartilhada / uma DLL. Você precisa do vinculador para manter todos os símbolos, mesmo se não for usado, porque outro binário que carrega o .so / .dll no tempo de execução pode precisar desses símbolos.