我正在用C++编写一个应用程序,它依赖于我项目中的各种资源.现在,我有从生成的可执行文件到我的源中硬编码的每个资源的相对路径,这允许我的程序打开文件并读入每个资源中的数据.这工作正常,但它要求我从相对于资源的特定路径启动可执行文件.因此,如果我尝试从其他任何地方启动我的可执行文件,它将无法打开文件而无法继续.
有没有一种可移植的方法让CMake将我的资源嵌入到可执行文件(或库)中,以便我可以在运行时只在内存中访问它们而不是打开路径脆弱的文件?我找到了一个相关的问题,看起来嵌入资源可以用一些ld魔法做得很好.所以我的问题是如何使用CMake 以便携,跨平台的方式做到这一点?我实际上需要在x86和ARM上运行我的应用程序.我只支持Linux(嵌入式),但如果有人可以建议如何为Windows(嵌入式)做这个,也可以获得奖励积分.
编辑:我忘了提到解决方案的理想属性.我希望能够在为ARM构建时使用CMake交叉编译应用程序,而不是必须在我的ARM目标上本地编译它.