Qt 如何使用生成的makefile中的INSTALL\u根目录?
Qt 如何使用生成的makefile中的INSTALL\u根目录?,qt,qmake,Qt,Qmake,qmake为安装目标生成以下(以及其他)规则: -$(INSTALL_PROGRAM) "$(TARGET)" "$(INSTALL_ROOT)/$(TARGET)" 我无法在*.pro文件中设置INSTALL\u ROOT isEmpty(INSTALL_ROOT) { INSTALL_ROOT=/usr } 因为INSTALL\u ROOT对于生成的makefile来说是本地的。根据我目前发现的情况,INSTALL\u ROOT默认为空。它可以像这样使用 INSTALL_ROOT
qmake
为安装目标生成以下(以及其他)规则:
-$(INSTALL_PROGRAM) "$(TARGET)" "$(INSTALL_ROOT)/$(TARGET)"
我无法在*.pro
文件中设置INSTALL\u ROOT
isEmpty(INSTALL_ROOT) {
INSTALL_ROOT=/usr
}
因为INSTALL\u ROOT
对于生成的makefile来说是本地的。根据我目前发现的情况,INSTALL\u ROOT
默认为空。它可以像这样使用
INSTALL_ROOT=$HOME make install
调用make时,这很好。但是,我希望能够指定默认的安装根目录,比如说/usr
。我可以按照建议引入一个新变量前缀
。
然后生成的规则将如下所示(如果前缀
设置为/usr
)
然而
INSTALL_ROOT=$HOME make install
将目标安装到/home//usr/$(target)
,这不是人们所期望的
因此,将INSTALL\u ROOT
设置为某个默认值将产生一致的行为,这优于添加前缀
,但是如何在*.pro
文件中设置INSTALL\u ROOT
INSTALL\u ROOT
的目的是什么?应该使用它吗?我在这里回答Windows的问题。您似乎正在使用UNIX、Linux或Mac OS X,因此可能需要进行一些更改
INSTALL_ROOT是一个文档不完整的功能,它似乎是为了让那些没有ROOT或admin访问权限的用户可以在本地文件系统中安装Qt而添加的。这实际上是一种黑客行为,因为正如您已经看到的,不可能指定任意目标,但您始终可以在以后将文件移动到所需的位置。INSTALL\u ROOT用于包构建系统,如NSIS、debian,或用于打包和交付构建软件的任何其他方式 为此,您希望得到以下结果:
INSTALL_ROOT=$PWD/package_root make install
在$PWD/package_root下创建一个树,它完全模仿您计划交付给的目标系统上的树。请注意,INSTALL_ROOT必须是完整路径(因此是$PWD),而不是相对路径
当您创建包时,您可以将该树压缩到存档中,然后您的安装过程只需将相同的树解压缩到目标文件系统
$PWD/package_root/usr/bin/my_binary
将安装到
/usr/bin/my_binary
瞄准目标
这就是问题的答案,INSTALL_ROOT是用来做什么的。要回答如何指定“默认安装根目录”,需要了解有关您想要实现的目标的更多信息
查看qmake-query的输出:
sez@ubuntu-11.10:~$ qmake -query
QT_INSTALL_PREFIX:/usr
QT_INSTALL_DATA:/usr/share/qt4
QT_INSTALL_DOCS:/usr/share/qt4/doc
QT_INSTALL_HEADERS:/usr/include/qt4
QT_INSTALL_LIBS:/usr/lib/i386-linux-gnu
QT_INSTALL_BINS:/usr/bin
<snipped>
QT_VERSION:4.7.4
然后你的二进制文件将被安装在qt认为合适的地方,qt_安装箱。当然,您可以通过将target.path设置为其他内容来更改这些默认值。Qt提供了这些路径,但使用与否取决于您
你可以
MY_DEFAULT_INSTALL=/opt/myproj
somedocs.files = docs/index.html
somedocs.path = $$MY_DEFAULT_INSTALL/docs
target.path = $$MY_DEFAULT_INSTALL/bin
INSTALLS += somedocs target
例如,MY_DEFAULT_INSTALL是.pro文件中定义默认安装的位置
target.path = $$[QT_INSTALL_BINS]
INSTALLS += target
MY_DEFAULT_INSTALL=/opt/myproj
somedocs.files = docs/index.html
somedocs.path = $$MY_DEFAULT_INSTALL/docs
target.path = $$MY_DEFAULT_INSTALL/bin
INSTALLS += somedocs target