首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c++中生成只输出单个hpp文件的标头库

在c++中生成只输出单个hpp文件的标头库
EN

Stack Overflow用户
提问于 2022-06-11 19:30:38
回答 1查看 103关注 0票数 0

我想用c++编写一个小库,然后“编译”它,并将它作为一个.hpp文件发布。不过,我想不出从代码库创建单个.hpp文件的简单方法。

我正在尝试做一些类似于catch.hpp的东西。当我看他们的代码库时,他们似乎在做类似的事情。它们似乎拥有大量的.h和.cpp文件集合,然后用于生成.hpp文件。

我希望我的项目结构看起来如下所示:\

代码语言:javascript
运行
复制
folder
  - src
    - something.h
    - something.cpp
    - another_thing.h
    - another_thing.cpp

  - tests
    - something_tests.cpp
    - another_thing_tests.cpp

  - console_app
     - main.cpp

我想创建一个makefile并运行一些命令:

make library =>创建包含src文件夹中所有内容的library.hpp。make tests =>运行测试make console =>创建library.hpp,然后在console_app文件夹中编译main.cpp

我通常知道如何做make测试,但是我不知道如何从src文件夹创建一个hpp文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-11 21:13:54

@UnholySheep的答案如下:

catch.hpp是通过脚本生成的:github.com/log4cplus/Catch/blob/…,它实际上只是将所有文件连接到一个文件中。

与法比安的回答成对:

甚至不要开始只在头库中添加.cpp文件。cpp文件中通常不能只在头库中执行,例如非内联函数定义等,如果库包含在多个二进制转换单元中,则很容易导致名称冲突。此外,我不认为把所有东西都放在一个头文件中是有益的;这只会使找到东西变得几乎不可能:没有人想在你的50k的loc文件中搜索他们正在寻找的东西。

我已经确定了最好的解决方案是首先在.hpp文件中编写代码。然后编写一个脚本,将所有.hpp文件连接到一个文件中。文件结构如下所示:

代码语言:javascript
运行
复制
folder
  - src
    - something.hpp
    - another_thing.hpp

  - tests
    - something_tests.cpp
    - another_thing_tests.cpp

  - console_app
     - main.cpp
  
  - library_gen_script.sh

然后脚本library_gen_script.sh将只包含逻辑,将src文件夹中的所有内容打包到一个.hpp文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72587313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档