Was ist die idiomatische Methode in CMAKE, um die Compileroption -fPIC hinzuzufügen?

Ich habe mindestens 3 Wege gefunden, um dies zu tun, und ich frage mich, was der idiomatische Weg ist. Dies muss in fast allen statischen Bibliotheken durchgeführt werden. Ich bin überrascht, dass der Makefile-Generator in CMake dies nicht automatisch zu statischen Bibliotheken hinzufügt. (es sei denn, ich vermisse etwas?)

target_compile_options(myLib PRIVATE -fPIC)

add_compile_options(-fPIC)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic")

Ich glaube, es könnte auch andere Variationen geben. (Bitte bearbeite meine Frage, wenn du eine findest.)

Wenn Sie die Antwort auf diese Frage wissen, wissen Sie auch, ob es eine Möglichkeit gibt, ein CMake-Projekt eines Drittanbieters mit diesem Flag zu kompilieren, ohne die CMakeLists.txt-Datei zu ändern? Ich bin auf statische Bibliotheken gestoßen, denen dieses Flag fehlt. Es verursacht Probleme beim Kompilieren einer statischen Bibliothek in eine dynamische Bibliothek.

Du erhältst

relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC

Antworten auf die Frage(2)

Ihre Antwort auf die Frage