实现资源目录的良好实践

时间:2012-10-11 18:52:13

标签: c++ resources cross-platform qmake

我不确定这是否过于笼统,所以如果是我会说我在Linux上使用qmake,但我希望能够随时随地使用我的项目从Linux切换到Windows需要,以及可能还有其他PC。

为了做到这一点,我想知道这里的一些程序员如何使用资源目录而不使用绝对路径定义。使用Qt,似乎运行时工作目录是应用程序的 build 目录,而不是源目录。

理想情况下,我认为最好的解决方案是以某种方式获取资源目录,因为它位于源目录中并将其复制到相对构建目录(即,调试或发布,具体取决于开发阶段),以便应用程序可以通过运行时访问。

这可能会引入一些并发症(至少,我认为可以)。

无论如何,这样做会有什么好处?

2 个答案:

答案 0 :(得分:3)

如果你正在使用Qt。我建议使用部署过程。 http://doc.qt.digia.com/qtcreator/creator-building-running.html

基本上,您只需要声明需要复制哪些目录。 在构建过程完成后,qt创建者将复制这些目录以构建目录(发布/调试)。然后您只需运行可执行文件。

这是一个例子。 https://github.com/longwei/incubator-cordova-qt

在专业档案中

wwwDir.source = www
xmlDir.source = xml
qmlDir.source = qml

DEPLOYMENTFOLDERS = wwwDir xmlDir qmlDir

第二

include(deployment.pri)
qtcAddDeployment()

然后就完成了。

答案 1 :(得分:1)

目前还不清楚你究竟想要实现什么,但也许一个简单的解决方案是构建脚本通过编译定义(-D与gcc)传递必要的路径。然后,根据它是否为Debug,Release等构建,将相应地设置定义,然后相应的二进制文件将具有正确的路径。

作为旁注,我尝试了一段时间的qmake,但发现SCons更加通用。