我有一个带有一些类似C的纯文本的文本文件。我想在编译时(理想情况下使用cmake
)获取此文件中的文本并使用它生成一个简单的C ++头文件 - 一个包含几个包含,名称空间声明和std的文件:: string,其值是我的文本文件的内容,新行和包含的所有内容。
最好的方法是什么?
答案 0 :(得分:0)
好的,所以我选择了与此处建议的解决方案不同的解决方案。这就是我所做的。
在我的源代码中,我定义了一个处理程序类,我将使用我需要的字符串文字。这里有两件事很重要:
.hpp.in
。实施文件是正常的.cpp
#define MY_STRING @MY_STRING@
现在,在负责这两个文件的CMakeLists.txt中,我这样做:
//
个评论,将结果保存在临时变量中\n
个字符替换为字符串"newline"
,将结果保存为新的临时变量MY_STRING
),并从最新的临时变量中分配.hpp
,将标题从$ {CMAKE_SOURCE_DIR}下的位置复制到$ {CMAKE_BINARY_DIR}下的相应位置(并将其重命名为@ONLY
)。这可确保cmake将复制头文件,但也会更新#define MY_STRING @MY_STRING@
,其值为MY_STRING
我设置得更早。最后,在我的处理程序的实现文件中,我定义了以下宏:
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
这样我就可以调用TOSTRING(MY_STRING)
并将输出分配给std::string my_string
。完成后,我需要做的就是用"newline"
替换"\n"
占位符字符串 - 我就完成了! my_string
现在的值等于原始文本文件中的值(没有那里的注释)。
我希望我有更多的时间来玩这个,更少的其他任务来分散我的注意力,但事情就是这样,现在必须这样做。
谢谢大家的帮助!