在我的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