首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么RPATH_CHECK在CMake中删除可执行文件?

为什么RPATH_CHECK在CMake中删除可执行文件?
EN

Stack Overflow用户
提问于 2021-11-08 09:27:17
回答 1查看 126关注 0票数 0

如果RPATH不一样,下面CMake的操作将删除可执行文件。

代码语言:javascript
复制
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,我使用了:

代码语言:javascript
复制
./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

然后

代码语言:javascript
复制
cmake --build . --parallel

CMake版本3.16.3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-08 12:11:24

为什么RPATH_CHECK在CMake中删除可执行文件?

因为它就是这么做的。(?)

是CMake的正确行为,还是错误?

对,是这样。

RPATH_CHECK应该做什么?

检查该文件是否需要RPATH,如果没有,则应删除该文件。

如果您对CMake中的RPATH特性有任何其他的关注,我在最后一个答案中发布了源代码-所有都在这里。在RPATH_CHECK源代码树中搜索CMake,您将从函数名中找到该函数--您可以“猜测”其含义和所使用的算法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69881222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档