2

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

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

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

4

2 回答 2

0

一般不了解系统库。对于 Qt,您将搜索路径设置为 qmake,然后 qt 将完成其余的工作。Qmake 路径是通过 QT_QMAKE_EXECUTABLE 设置的,我使用 Qt 商业版,这就是我在 Cmake 中设置路径的方式。

设置(QT_QMAKE_EXECUTABLE $ENV{HOME}/QtCommercialSDK/Desktop/483/gcc-64/bin/qmake)

于 2013-01-17T16:52:58.013 回答
0

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

除此之外,您需要创建一个chroot(穷人的 BSD 监狱)来部署您的应用程序。您需要将所有依赖项的副本安装到 chroot(用于ldd查找它们)和 Qt4 的副本想用。

于 2013-01-10T07:24:10.893 回答