我想在我的项目中使用某个版本的Qt4。我正在使用debian,并且已经安装了旧版本的Qt4。当我在我的CMakeLists文件中使用find_package命令时,当然找到了系统库,因为cmake使用了文件/usr/share/cmake-2.8/Modules/FindQt4.cmake。
到目前为止,我所做的是链接较新的Qt4,是手动编辑ccmake的路径。问题是我不允许在系统目录中安装较新的Qt4版本。是否有任何更简单的解决方案告诉cmake不使用系统库只是使用另一个版本。当然,我可以创建自己的模块,并给find_package命令提供我自己的模块的路径,但我认为这很烦人,必须有一个更简单的解决方案。
我还寻找过,FindQt4.cmake模块是否有一些环境变量,但没有。 - 那么,是否有一个通用的解决方案来避免系统库并使用安装在非系统目录中的库而不做一些肮脏的技巧?
答案 0 :(得分:0)
在Linux上使用不同版本库的唯一真正方法是使用静态链接。如果您需要同时使用同一库的不同版本,则需要使用支持该范例的操作系统。 Solaris(及其派生物)特别擅长(使用-L
编译指向要编译的库和-R
以指示运行时该库的路径)。我相信BSD是一样的。
除此之外,你需要创建一个chroot
(一个穷人的BSD监狱)来部署你的应用程序。你将安装所有依赖项的副本到chroot,(使用{{1找到它们)和你想要使用的Qt4的副本。
答案 1 :(得分:0)
一般不了解系统库。对于Qt,您将搜索路径设置为qmake,qt将完成剩下的工作。 Qmake路径是通过QT_QMAKE_EXECUTABLE设置的,我使用Qt商业广告,这就是我在Cmake中设置路径的方式。
set(QT_QMAKE_EXECUTABLE $ ENV {HOME} / QtCommercialSDK / Desktop / 483 / gcc-64 / bin / qmake)