在我的CmakeLists.txt文件中,我有以下行
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall")
有了这个,我遇到了错误
"You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC (-fPIE is not enough)."
然后我不小心找到了主题
在 cmake 中编译 QT 项目时出错
建议添加该行的地方
add_definitions(-fPIC)
真的,它似乎有效。我有两个问题:
1./定义PIC的第一种形式有问题吗?(或者,为什么它们有不同的效果?
2./我从旧项目中"重新处理"了那条线,在那里它工作得很好。可以改变什么?
add_definitions(-fPIC)
行是错误的。首先,它应该是add_compile_options
.然后,add_definition
是您应该避免的目录命令。
CMake 必须检测到宏名称以-f
开头,并将其添加为编译器选项。
你真正想要的是告诉 CMake 目标应该编译为与位置无关的代码。
set_target_properties(your-executable PROPERTIES
POSITION_INDEPENDENT_CODE ON
)
这应该可以解决问题,并且与编译器无关。