如何将文件与C++应用程序的二进制文件打包在一起

How do I pack a file together with the binary of a C++ application?

本文关键字:二进制文件 在一起 应用程序 C++ 文件      更新时间:2023-10-16

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

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

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

因此,在源代码中,我使用"XSD_FILE_LOCATION"来查找XSD文件的路径。

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

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

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

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

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

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