如果RPATH不一样,下面CMake的操作将删除可执行文件。
file(RPATH_CHECK
FILE "${CMAKE_CURRENT_SOURCE_DIR}/moc"
RPATH "\$ORIGIN/../lib")如果RPATH不会是$ORIGIN/../lib,那么-op,就没有更多的可执行文件。
它是CMake的正确行为,还是一个bug?
RPATH_CHECK应该做什么?
我在Linux的QT6.2.1中发现了这个问题。Qt构建成功,但cmake --install .失败,因为CMake由于RPATH_CHECK文件的操作与RPATH不匹配(声明和实际)而删除了可执行文件。实际的RPATH在执行点是::::::::::::::,RPATH_CHECK。
我在Kubuntu 20.04。我用官方的在线安装程序安装了Qt的源代码。为了配置Qt,我使用了:
./configure -nomake tests -nomake examples -skip qttest -skip qtwebengine -skip qtwebview -skip qtpositioning -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtnfc -skip qtcharts -skip qt3d -skip qtwayland -skip qtcoap -skip qtdatavis3d -skip qtlottie -skip qtmqtt -skip qtnetworkauth -skip qtopcua -skip qtquick3d -skip qtquicktimeline -skip qtremoteobjects -skip qtvirtualkeyboard -skip qtwebchannel -skip qtwebsockets -release -shared -skip qt5compat -skip qtdoc -skip qtscxml -skip qttranslations -skip qttools然后
cmake --build . --parallelCMake版本3.16.3
发布于 2021-11-08 12:11:24
为什么RPATH_CHECK在CMake中删除可执行文件?
因为它就是这么做的。(?)
是CMake的正确行为,还是错误?
对,是这样。
RPATH_CHECK应该做什么?
检查该文件是否需要RPATH,如果没有,则应删除该文件。
如果您对CMake中的RPATH特性有任何其他的关注,我在最后一个答案中发布了源代码-所有都在这里。在RPATH_CHECK源代码树中搜索CMake,您将从函数名中找到该函数--您可以“猜测”其含义和所使用的算法。
https://stackoverflow.com/questions/69881222
复制相似问题