• 使用qmake编译时拷贝文件


    使用qmake构建项目时,需要在make时拷贝一些文件到指定位置,非执行make install,下面总结列举一下我了解的方式

    COPIES

    示例pro

    1 COPY_DIR = $$PWD/copys
    2 
    3 cp_kk.files += 
    4           aaa 
    5           bbb
    6 
    7 cp_kk.path  += $$INSTALL_DIR/copys
    8 
    9 COPIES +=  cp_kk

    执行qmake后查看Makefile文件

    COPY          = cp -f
    COPY_FILE     = cp -f
    COPY_DIR      = cp -f -R
    
    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

  • 相关阅读:
    扫雷游戏

    set
    map
    认识了个外国友人!
    插入排序算法
    复习 C语言
    有关于我的一点想法
    linux下的内存分布
    C语言-将输入的字符输出并将多个空格按照一个空格的方式输出
  • 原文地址:https://www.cnblogs.com/nuoforever/p/14005426.html
Copyright © 2020-2023  润新知