实现资源目录的良好做法
Good practice for implementing resource directories
我不确定这是否太笼统了,所以如果是的话,我会说我在使用 qmake 的 Linux 上,但我希望能够在需要时通过我的项目从 Linux 切换到 Windows,以及可能的其他 PC。
为了做到这一点,我想知道这里的一些程序员是如何在不使用绝对路径定义的情况下使用资源目录的。使用Qt时,运行时工作目录似乎是应用程序的构建目录,而不是源目录。
理想情况下,我认为最好的解决方案是以某种方式获取驻留在源目录中的资源目录,并将其复制到相对构建目录(即调试或发布,取决于开发阶段),以便应用程序可以通过运行时访问它。
但是,这可能会带来一些复杂性(至少,我认为可以)。
无论如何,这样做的好解决方案是什么?
如果您使用的是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()
然后就完成了。
目前尚不清楚您究竟要实现什么,但也许一个简单的解决方案是让构建脚本通过编译定义传递必要的路径(与 gcc -D
)。然后,根据它是调试、发布等构建,将相应地设置定义,然后相应的二进制文件将具有正确的路径。
作为旁注,我尝试了一段时间的qmake,但发现SCons更加通用。
相关文章:
- 具有瞬态资源的RAII类
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 允许从 std::map 的密钥窃取资源?
- 参考资源文件VC++中的$(SolutionDir)
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 如何在 Win32 窗口中实现 MFC 资源
- 关于学习C++编码以实现高效/高性能数学例程,有哪些(推荐的)资源/书籍
- 实现资源目录的良好做法
- 如何使用资源获取初始化实现构建器模式