我想在我的项目中使用某个版本的Qt4。我正在使用debian,并且已经安装了一个旧版本的Qt4。当然,当我在CMakeLists文件中使用find_package命令时,会找到系统库,因为cmake使用文件/usr/share/cmake-2.8/Modules/FindQt4.cmake。
到目前为止,我所做的是用ccmake手动编辑路径来链接较新的Qt4。问题是不允许我在系统的目录中安装较新的Qt4版本。有没有更简单的解决方案来告诉cmake不要使用系统库,只使用另一个版本。当然,我可以创建我自己的模块,并为find_package命令提供我自己的模块的路径,但我认为这很烦人,必须有一个更简单的解决方案。
我也在寻找,是否有一些环境变量被FindQt4.cmake模块使用,但没有。-那么,有没有一个通用的解决方案来避免系统库,并使用安装在非系统目录中的库,而不做一些肮脏的把戏?
发布于 2013-01-10 15:24:11
在Linux上使用不同版本的库的唯一真正方法是使用静态链接。如果您需要能够同时使用同一个库的不同版本,则需要使用支持该范例的操作系统。Solaris (及其衍生产品)在这方面尤其擅长(使用-L编译指向要编译的库,使用-R指示运行时该库的路径)。我相信BSD也是一样的。
除此之外,您需要创建一个chroot (穷人的BSD监狱)来部署您的应用程序。您将安装chroot的所有依赖项的副本(使用ldd查找它们)和您希望使用的Qt4副本。
发布于 2013-01-18 00:52:58
一般来说,我对系统库一无所知。对于Qt,您将搜索路径设置为qmake,qt将完成其余工作。Qmake路径是通过QT_QMAKE_EXECUTABLE设置的,我使用Qt商业版,这就是我在Cmake中设置路径的方式。
$ENV{HOME}/QtCommercialSDK/Desktop/483/gcc-64/bin/qmake) (QT_QMAKE_EXECUTABLE set
https://stackoverflow.com/questions/14252666
复制相似问题