У меня есть как минимум 3 способа сделать это, и мне интересно, каков идиоматический путь. Это нужно сделать почти повсеместно для любой статической библиотеки. Я удивлен, что генератор Makefile в CMake автоматически не добавляет это в статические библиотеки. (если я что-то не хватает?)
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")
Я считаю, что могут быть и другие варианты. (пожалуйста, отредактируйте мой вопрос, если найдете его)
Если вам посчастливилось узнать ответ на этот вопрос, знаете ли вы, есть ли способ скомпилировать проект третьей стороны CMake с этим флагом, не изменяя его файл CMakeLists.txt? Я столкнулся с статическими библиотеками, у которых отсутствует этот флаг. Это вызывает проблемы при компиляции статической библиотеки в динамическую библиотеку.
Вы получаете:
relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC