使用qmake編譯時拷貝檔案
阿新 • • 發佈:2020-11-19
使用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/aaacopys/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