首页 > 解决方案 > CMake 全局包含标头

问题描述

我想在我的 C++ cmake 项目中全局包含标头。例如,我希望将 lib 包含在我的项目中的每个文件中,而不必将其放入 #include <string>每个文件中

标签: c++cmake

解决方案


我的回答是:不要那样做。它会让你的代码更不便携、更难阅读、更难调试。

处理标头可能会很痛苦,但在我们拥有模块化标准库之前,它就是这样。

你可以做的是创建一个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>

存在会改变编译器行为的参数,但这主要是为了处理预编译的标头,它对包含顺序有要求。


推荐阅读