【问题标题】:How do I pack a file together with the binary of a C++ application?如何将文件与 C++ 应用程序的二进制文件打包在一起?
【发布时间】:2015-03-26 08:29:54
【问题描述】:

我有一个 C++ 应用程序,它从 XML 文件中获取配置选项,并使用 XSD 文件来验证提供的信息。

目前,我在 makefile 中定义 XSD 文件的位置,如下所示:

DEFINES := XSD_FILE_LOCATION=\"$(HOST_DIR)/share/$(strip $(COMPONENT_DIR))/xml\"

所以我从源代码中使用“XSD_FILE_LOCATION”来查找 XSD 文件的路径。

我想将 XSD 文件与应用程序的二进制文件一起打包,以便可以传递二进制文件并且它已经包含 XSD 信息,而不是要求在将要使用的每台 PC 上构建它。

编辑:我正在考虑将 XSD 文件作为字符串嵌入到源代码中,但该解决方案并不能说服我,我喜欢将其作为单独文件的想法。

【问题讨论】:

标签: c++ xml c++11 xsd makefile


【解决方案1】:

如果你想把它打包在可执行文件中,你可以考虑简单地创建一个变量来保存它,比如(不是真正有效的 XML,目的只是为了显示方法):

const char *xml =
    "<xml>"
    "  <tag>This is my XML.</tag>"
    "  <tag>There are many like it, but this one is mine.</tag>"
    "</xml>"
;

您甚至可以有一个构建步骤,将 real XML 文件转换为 C++ 源文件进行编译,这样任何有趣的事情(如字符转义)都可以自动完成。这允许您在开发期间以原始形式管理 XML 文件(作为单独的文件),同时在构建时将其与可执行文件合并。

然后,一旦你的程序运行起来,你就可以做你认为合适的事情。使用包含在 xml 中的内存中的副本,将其作为启动的一部分写入磁盘,或者您想要的任何其他内容。

【讨论】:

  • 我只是在想这个。不过,我会使用 std::string 。我会多考虑一下。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 2010-09-12
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
相关资源
最近更新 更多