在我的C++/QT5項目工作,我有一些外部文件(PNG圖像等),我需要在編譯時可執行旁邊有抄襲。到目前爲止,我沒有發現用qmake來實現這一目標的好方法。QT5 - 複製其他文件上生成時間 - 必須在許多情況下
我年前問這個問題的一個打火機變種,但那裏的一切,一切我在網上查到似乎不完整的我。它必須在每個下列條件下工作:
- 有人拿起我的源代碼,只是調用
qmake foo.pro && make && ./foo
(在Linux上) - 和上面一樣,但她也呼籲
make install
事後 - 像第一個,但視窗(忘了Qt的DLL或其他外部的東西 - 我只是問我自己的文件)
- 有人拿起我的源代碼,打開它在QtCreator,只是點擊播放(在任何操作系統 - 但是,EHMM,可以說,至少Linux的和Windows)
我現在擁有的所有技術都很有技術性,並且性能也很差。必須有比我更輕量,更好的工作嗎?
這是一個精簡的變體,它描述了我foo.pro
做什麼:
QT += core gui xml widgets
TARGET = foo
TEMPLATE = app
...
EXTRA_BINFILES += logo.png
for(FILE, EXTRA_BINFILES) {
extrafiles.commands += $$quote($${QMAKE_COPY} $$shell_path($${PWD}/$${FILE}) $$shell_path($${OUT_PWD})$$escape_expand(\n\t))
}
QMAKE_EXTRA_TARGETS += extrafiles
POST_TARGETDEPS += extrafiles
它看起來要複雜得多,它應該給我。它在很多方面都被打破了。例如。如果在第一個條件失敗(因爲它試圖將文件複製到自身)。有了一個修補程序,再次失敗在Windows(因爲OUT_PWD
是不是真正的目標,但OUT_PWD/debug
或/release
是)。我懷疑,make install
也不會工作(但;未經測試)。
請幫助;)我真的必須添加修復這一切,還是有不同的做法?
嗨。我不是100%肯定的,但對我來說,它看起來就像我的一個微妙不同的變體,它基本上是一樣的。不是嗎?我目前的解決方案使用了shell命令(儘管它們有點隱藏在跨平臺的東西之後)。但是這對於優雅地涵蓋所有典型的情況來說似乎有些過於低級。 – ginger