我至少遇到过3种这样做的方式,我想知道哪种是最合适的方式.几乎所有的静电图书馆都需要这样做.我很惊讶cmake中的makefile生成器没有自动将其添加到静电库中.(除非我错过了什么?)
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项目在不修改其CmakeList的情况下使用此标志进行编译.txt文件?我遇到过缺少该标志的静态库.在将静态库编译为动态库时,它会导致问题.
你会得到:
relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC