如何将文件与C++应用程序的二进制文件打包在一起
How do I pack a file together with the binary of a C++ application?
我有一个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
中包含的内存副本,将其写入磁盘,作为启动的一部分,或者您想要的任何其他内容。
相关文章:
- 在C++中将类(带有Vector成员)保存为二进制文件
- Android 在编译二进制文件时重建静态库
- 在 C++ 中将双精度变量写入二进制文件
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- 对在不同二进制文件中创建的对象文件的依赖关系
- 我的 SDL2 程序需要哪些二进制文件,以便它在另一台未安装 SDL2 的计算机中工作
- 使用此指针在 c++ 中将对象写入二进制文件
- 如何在标准c ++中流式传输/读取二进制文件的中间部分并写入另一个文件?
- 有关在C++中解析二进制文件的问题
- 如果使用非公共类,vtable 是否会在二进制文件中持续存在?
- 是否可以在一个循环中写入多个二进制文件
- 使用 bazel 构建的二进制文件在 pprof 中查看源代码
- 自定义二进制文件在 C++ 中触发故障位
- 仅捕获异常就可以检测所有二进制文件在C 中读取错误是否足够
- ifstream读取二进制文件在发行模式下工作,但在调试模式下不使用
- 如何将文件与C++应用程序的二进制文件打包在一起
- C++二进制文件在使用valgrind运行时执行良好,但在单独运行此二进制文件时失败
- 二进制文件在Windows上比在Linux上要小
- 二进制文件在C++中更新
- 二进制文件在c++中,改变音频文件上的原始数据的内容