在交叉编译Qt源码时,需要设置部署路径。但是部署路径有三个变量,分别是-prefix
, -extprefix
和-hostprefix。那这三个变量分别是什么意思呢?
-prefix:目标板的引用路径。 这个路径有两个作用,一个是指定目标机的Qt库路径,也就是说,当你把Qt库部署到目标机时,需要把Qt库拷贝到这个路径下,Qt程序就可以自动找到库。第二个是,如果你没有指定extprefix, install的时候会把Qt库部署到sysroot+prefix这个路径下。
-extprefix: 介于默认会把Qt库部署到sysroot+prefix路径下,如果你不想这样,可以设置extprefix, 这样Qt库会部署到这个目录下而不是sysroot下。可以避免污染sysroot。我个人建议编译的时候设置-prefix 和-extprefix 就可以了。
-hostprefix: 如果你还有更奇葩的需求,比如qmake等工具不要和Qt库安装在一起,那么这个参数就很适合你。这个参数是指定编译工具的安装位置,不包括Qt库。指定这个变量之后,qmake等工具会安装在这个目录下,extprefix下面就不会有这些工具了。我目前没想到这么做有啥好处。所以不建议使用。
综上所述,建议编译时制定两个路径,一个是目标板部署路径-prefix,一个是宿主机部署路径 -extprefix. 如果不怕污染sysroot的话,指定一个prefix就可以了。