使用qt开发,最后打成rpm包是遇到了总是将文件直接装到/usr/lib下的情况,而非$RPM_BUILD_ROOT/usr/lib,经过继争的启发和自己的探索终于找到了解决办法。
1、建立pro文件
调用qmake -project将生成与目录同名的.pro文件。在pro文件中TEMPLATE = app是默认构建类型,如果项目是一个库,就将app换为lib。另外一个重要的变量是TARGET = ,这是目标文件的名字。如果构建的是lib、TARGET = mytarget,则最终目标为libmytarget.so.(version).
安装的设置基本两步,一是目标的files,二是目标的paths,也就是安装路径。我认为就是两种,第一可执行文件或者生成库,这是默认构建目标;第二是头文件,这个target的名字可以自己设置,如我的pro文件中的mytest:
target.path = /usr/lib
mytest.files = $$HEADERS
mytest.path = /usr/include
INSTALLS += target mytest
2、spec文件中的设置
这里把我搞的很迷糊,后来在继争启发下DESTDIR在Makefile中要预先设置得到启发,终于找到了INSTALL_ROOT这个qt4中默认的安装前缀。
前面的字段没什么改变都是%setup qmake make什么的,就是在%install这里,make install不用DESTDIR,而是INSTALL_ROOT才能得到正确的结果,spec文件如下:
%prep
%setup -n %{name}
%build
qmake
make
%install
make INSTALL_ROOT=$RPM_BUILD_ROOT install
%files
linshao.Solin 于 2010-01-08 14:12:06发表:
谢谢分享啊