/ / Čo znamená bazel alwayslink = true? - c ++, bazel

Čo robí bazel alwayslink = true znamená? -c , bazel

Ja som nový v bazeli. Tu je vysvetlenie v bazéne doc:

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

alwayslink

boolean; voliteľný; nonconfigurable; predvolená hodnota je 0

Ak 1, každý binár, ktorý závisí (priamo alebonepriamo) na tento C ++ knižnica bude odkazovať vo všetkých súboroch objektov pre súbory uvedené v zozname srcs, aj keď niektoré neobsahujú žiadne symboly, na ktoré odkazuje binárny kód. toto je užitočný, ak váš kód nie je explicitne volaný kódom v binárnom kóde, napríklad, ak sa váš kód zaregistruje, aby prijal nejaké spätné volanie, ktoré poskytli niektorí service.

Nerozumiem poslednej vete: e.g., if your code registers to receive some callback provided by some service. Môže niekto dať a príklad? Vďaka!

odpovede:

1 pre odpoveď č. 1

ak sa váš kód zaregistruje, aby prijal spätné volanie, ktoré poskytuje určitá služba.

AIUI, to je prípad, keď cc_binary buduje zdieľanú knižnicu / knižnicu DLL. Na udržanie všetkých symbolov, aj keď nie sú použité, potrebujete linker, pretože iný binár, ktorý načítava .so / .dll za behu, môže tieto symboly potrebovať.