/ / Pobieranie CMake do wyjścia Dylib lub Framework z Bitcode - cmake, dylib

Uzyskanie CMake do wyprowadzenia Dylib lub Framework z Bitcode - cmake, dylib

Budując platformę do wykorzystania w projekcie Mac / TV / iOS postanowiłem zbudować platformę i na wszelki wypadek dołączyć kod bitowy. Jednak moja struktura wyjściowa nie zawiera kodu bitowego.

widze -fembed-bitcode jest wywoływany w każdym pliku źródłowym, ale gdy sprawdzam .dylib z otool -l library.dylib nie ma __LLVM Sekcje. Przechodząc do tworzenia biblioteki statycznej, widzę __LLVM Sekcje.

Dlaczego właściwie nie buduje biblioteki?

Odpowiedzi:

0 dla odpowiedzi № 1

Kluczem jest to, że biblioteka statyczna jest po prostuarchiwum plików obiektowych. Aby poprawnie zbudować bibliotekę dynamiczną, czy to w ramach, czy nie, musisz spojrzeć na ostatnią linię danych wyjściowych z cmake. Tam zobaczysz clang zadzwonił ze wszystkimi .o pliki, a plik wyjściowy to .dylib. Brakuje tego wiersza -fembed-bitcode a podczas łączenia biblioteki musisz ponownie przekazać -fembed-bitcode flaga.

Tak więc poprzez dodanie flagi do celu kompilacji, a poprawne połączenie biblioteki dodaje kod bitowy.

target_compile_options( library PUBLIC -fembed-bitcode )
target_link_libraries( library PUBLIC -fembed-bitcode )