distdir: FORCE
@test -d $(DISTDIR) || mkdir -
p $(DISTDIR)
$(COPY_FILE)
--parents $(DIST) $(DISTDIR)/
$(COPY_FILE)
--parents /home/XXX/Qt/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE)
--parents main.cpp $(DISTDIR)/
$(COPY_FILE)
--parents aaa bbb $(DISTDIR)/
compiler_copy_cp_kk_make_all: copys/aaa copys/bbb
copys/aaa: aaa
$(QINSTALL) aaa copys/aaa
copys/bbb: bbb
$(QINSTALL) bbb copys/bbb
另外执行完qmake之后就可以看到创建了copys目录,但是在make前目录是空的。make之后,文件aaa和bbb被拷贝过来了。
QMAKE_PRE_LINK和QMAKE_POST_LINK
示例pro
PRE_DIR = $$PWD/pre
QMAKE_PRE_LINK += $$QMAKE_COPY_FILE $$PWD/ccc $$PRE_DIR
POST_DIR = $$PWD/post
QMAKE_POST_LINK += $$QMAKE_COPY_FILE $$PWD/ddd $$POST_DIR
查看Makefile
cp -f /home/XXX/testpro/ccc /home/XXX/testpro/pre
cp -f /home/XXX/testpro/ddd /home/XXX/testpro/post
这个示例中需要在当前目录下有pre和post两个目录,如果没有的话make会报错。执行qmake和make后可以看到两个文件已经分别拷贝了。
QMAKE_PRE_LINK和QMAKE_POST_LINK的功能远不止于此,后面可以跟更多的命令
QMAKE_EXTRA_TARGETS
它类似于QMAKE_PRE_LINK和QMAKE_POST_LINK,功能也是非常的丰富。
示例pro
CPEXT_DIR = $$PWD/extra
cp_ext.commands += $$QMAKE_COPY_FILE $$PWD/eee $$CPEXT_DIR
QMAKE_EXTRA_TARGETS += cp_ext
PRE_TARGETDEPS += cp_ext
执行qmake,查看Makefile文件
cp_ext:
cp -f /home/XXX/testpro/eee /home/XXX/testpro/extra
$(TARGET): cp_ext
执行make后可以看到文件eee已经拷贝成功。
QMAKE_SUBSTITUTES
示例pro
cp_et.input = $$PWD/fff
cp_et.output = $$CPEXT_DIR/ggg
QMAKE_SUBSTITUTES += cp_et
执行qmake和make后可以看到文件已经复制并改名。
通过该实例总结了几种使用qmake构建项目拷贝文件的方式,欢迎大家补充。
http://www.qtcn.org/bbs/read-htm-tid-55157.html
https://www.codenong.com/18488154/
https://blog.csdn.net/zzs0829/article/details/109047242