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 № 1por 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.