用CMAKE同时配置64位和32位两种版本的QT

来源:互联网 发布:青岛干部网络管理学院 编辑:程序博客网 时间:2024/05/21 10:40

用CMAKE同时配置64位和32位两种版本的QT

在笔者的一个项目中,界面模块用到了Qt开源项目,为了支持64和32两种不同版本的发布,我们分别用了不同计算机来开发这两种版本。 每次在32位版本下开发了新功能,然后再合并代码到64位平台下,重新编译64位版本,这样做,不但需要频繁合并代码,费时费力,而要需要占有多余的计算机资源。笔者试验了一个新方法,可以在一台计算机上安装64和32位两种Qt版本, 然后用CMAKE根据不同编译选项找到这两种版本的Qt。方法如下:

 

1、将编译好的两种Qt 版本拷贝到固定目录下

在笔者的计算机下, 分别是d:/3rdpart/x86/qt  和 d:/3rdpart/x64/qt.  笔者没有找到x64的安装版本,解决方法是在32位安装程序里面,将可执行程序删除,重新在64位环境下编译一次,然后拷贝到指定目录。32位的Qt拷贝到指定目录后, 可以将原来的安装程序卸载。

2、让cmake根据configure 信息找到不同版本的Qt

如果没有安装信息,cmake语句find_package找不到Qt位置。通过查看findQt4的源代码,我们发现cmake会先查看注册表来选择Qt路径,如果没有找到,最后通过环境变量QTDIR来确定qt的安装路径。所以,为了让CMAKE 可以找到我们拷贝到两个指定目录下的Qt.我们必须在CMakeLists.txt中添加如下语句:

IF(CMAKE_CL_64)    SET(PLATFORM x64)    ELSE(CMAKE_CL_64)    SET(PLATFORM x86)ENDIF(CMAKE_CL_64)#3RD PART LIBRARIESset (3RDPART_DIR "d:/3rdPart")
set{ENV{QTDIR} "${3RDPART_DIR}/${PLATFORM}/QT/4.8.1")# call find_packagefind_package(qt4)


3、修改Qt的编译信息


通过以上两个步骤,cmake 已经可以顺利找到Qt的路径, 只是当运行cmake的configure功能时, 它会提示qt 的安装路径不正确,这是因为cmake会调用qmake来核实它的路径信息。 比如说我们在d:/qt/4.8.1下编译了qt的64位代码,然后将它移动到d:/3rdpart/x64下面,qmake并不知道这一点,当cmake调用 qmake -query时, qmaker仍然给出以前的路径,即d:/qt/4.8.1,而非d:/3rdpart/x64/qt/4.81. 这时我们需要做的只是在当前的qt目录下,打开cmd窗口,重新运行qt目录下的configure.exe 程序。
通过试验证明,经以上三个步骤, 我们已经可以成功地在同一台计算机上编译不同版本的QT 界面程序。

(笔者机器的cmake版本为2.8.7.  qt版本为4.8.1)

 

0 0
原创粉丝点击