gpt4 book ai didi

c++ - cmake如何避免系统库

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:58:21 25 4
gpt4 key购买 nike

我想在我的项目中使用某个版本的 Qt4。我正在使用 debian,并且已经安装了旧版本的 Qt4。当我在我的 CMakeLists 文件中使用 find_package 命令时,当然会找到系统库,因为文件/usr/share/cmake-2.8/Modules/FindQt4.cmake 被 cmake 使用。

到目前为止,我为链接较新的 Qt4 所做的工作是使用 ccmake 手动编辑路径。问题是我不允许在系统目录中安装较新的 Qt4 版本。有没有更简单的解决方案来告诉 cmake 不要使用系统库只使用另一个版本。当然,我可以创建自己的模块并为 find_package 命令提供我自己的模块的路径,但我认为这很烦人,必须有更简单的解决方案。

我也在寻找,是否有一些环境变量被 FindQt4.cmake 模块使用,但没有。 - 那么,是否有一个通用的解决方案来避免系统库并使用安装在非系统目录中的库而不做一些卑鄙的把戏?

最佳答案

在 Linux 上使用不同版本库的唯一真正方法是使用静态链接。如果您需要能够同时使用同一库的不同版本,则需要使用支持该范例的操作系统。 Solaris(及其衍生版本)特别擅长于此(编译时使用 -L 指向要编译的库,使用 -R 指示运行时该库的路径).我相信 BSD 也是一样。

除此之外,您需要创建一个 chroot(一个穷人的 BSD jail )来部署您的应用程序。您需要将所有依赖项的拷贝安装到 chroot,(使用ldd 找到它们)和您希望使用的 Qt4 拷贝。

关于c++ - cmake如何避免系统库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14252666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com