c++ - CMake 全局包含标头
问题描述
我想在我的 C++ cmake 项目中全局包含标头。例如,我希望将 lib 包含在我的项目中的每个文件中,而不必将其放入
#include <string>
每个文件中
解决方案
我的回答是:不要那样做。它会让你的代码更不便携、更难阅读、更难调试。
处理标头可能会很痛苦,但在我们拥有模块化标准库之前,它就是这样。
你可以做的是创建一个src/common/includes.h
文件,其中包含你想要的所有东西:
// includes.h
#include <string>
#include <vector>
#include <functional>
#include <unordered_map>
// ...
将包含目录添加到您的目标:
target_include_directories(your-exe PUBLIC src/common)
然后,在每个文件中,只需包含它:
#include <includes.h>
存在会改变编译器行为的参数,但这主要是为了处理预编译的标头,它对包含顺序有要求。
推荐阅读
- pytorch - 在 PyTorch 中进行非随机替换的均匀采样
- javascript - 刷新时保持状态
- list - 颤动如何在索引5上启动listWiew
- python - 合并具有匹配标题的行并合并它们的其他列
- php - 使用适用于 PHP 的 Google Drive API,将“keepRevisionForever”设置为 true 时上传文件的正确方法是什么?
- azure - 使用 Spring Cloud Stream 的 Azure 消息总线和批处理使用者
- reactjs - Redux combineReducers() 无法识别状态
- python - 'BertEmbeddings' 对象在转换 tf 检查点时没有属性'bias'
- azure - 我可以缓存令牌多长时间,Azure SDK 是否缓存令牌?
- php - 如何使用 API php 更新项目应用类型