c++ - 如何将文本文件编译为 C++ 程序作为 const 字符串?

标签 c++ gcc clang

我有一个 C++ 程序,我想在某个时候输出某个文本文件。当然我可以让它打开、读取和输出文本文件,但是我必须保持二进制文件和文本文件同步并放在一起。我宁愿在构建过程的某些部分将文件编译为字符串。

我曾在各种 IDE 中看到过这样的事情。但是,我正在使用 gcc 或 clang 从命令行构建。

当然,我可以编写自己的脚本,在编译时生成一个临时 .cpp 文件,并将其作为我的 Makefile 中的一个构建步骤,但我想知道是否有更成熟的选择来执行此操作。

我宁愿不要为了做到这一点而承担很多其他依赖。

最佳答案

有提议添加std::embed:p1040r4 .它的目的是提供几乎这个功能。

在该提案被标准化和实现之前,您必须要么

  1. 从输入文件生成源文件。为此存在工具。以 xxd 为例。

  2. 根据输入生成一个目标文件。一个通用的工具:objcopy.

  3. 使用汇编程序注入(inject):.incbin

源方法最便携。


请注意,嵌入不一定是最佳选择。使用非嵌入的单独文件通常是有利的,因为它可以轻松修改输入文件而无需重新构建可执行文件。让用户传递文件的路径以便他们可以替换自己的路径甚至可能是值得的。我的意思是,您将用一种便利换取另一种便利。

关于c++ - 如何将文本文件编译为 C++ 程序作为 const 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59311077/

相关文章:

c++ - 唯一指针是否在堆或堆栈上分配内存?

c++ - 在C++中移动和复制构造函数

c++ - IntelliSense:无法打开包含路径中的源文件

c - 为什么在正确的文件夹 "/lib"和 "/usr/lib"中链接库(如 pthread)?

c++ - 如何获得 -std=c++11 w/libstdc++?

c++ - 在 Flutter Windows 桌面应用程序中使用 C++ DLL

c++ - 解析 VS2010 MSBuild vcxproj 文件

c++ - OpenMP 仅使用一个线程

c++ - gcc 与 clang : inlining a function with -fPIC

iOS + C : the use of __attribute__ ((__constructor__)) in static framework