在我的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)."
那我偶然发现了话题
Error while compiling QT project in cmake
建议在其中添加行
add_definitions(-fPIC)
实际上,它似乎可行。我有两个问题:
1. /第一种定义PIC的形式有问题吗? (或者,为什么它们有不同的效果?)
2. /我从较旧的项目中“重新处理”了该行,在那儿工作得很好。有什么可以改变的?
答案 0 :(得分:2)
第add_definitions(-fPIC)
行是错误的。首先,它应该是add_compile_options
。然后,add_definition
是您应避免使用的目录命令。
CMake必须检测到宏名以-f
开头,并将其添加为编译器选项。
您真正想要的是告诉CMake应该将目标编译为与位置无关的代码。
set_target_properties(your-executable PROPERTIES
POSITION_INDEPENDENT_CODE ON
)
这应该可以解决问题,并且与编译器无关。