C++ 缩短编译时间

C++ 缩短编译时间,c++,compilation,header,pimpl-idiom,C++,Compilation,Header,Pimpl Idiom,ConfigsList.hpp: #pragma once #include <Configs/structures/First/First.hpp> #include <Configs/structures/First/First_info.hpp> #include <Configs/structures/Second/Second.hpp> #include <Configs/structures/Second/Second_info.hpp&g

ConfigsList.hpp:

#pragma once
#include <Configs/structures/First/First.hpp>
#include <Configs/structures/First/First_info.hpp>

#include <Configs/structures/Second/Second.hpp>
#include <Configs/structures/Second/Second_info.hpp>

#include <Configs/structures/Third/Third.hpp>
#include <Configs/structures/Third/Third_info.hpp>

#include <Configs/structures/Forth/Forth.hpp>
#include <Configs/structures/Forth/Forth_info.hpp>

#include <Configs/configs_manager.hpp>

namespace configs::list
{
using ConfigsManager = configs::ConfigsManager<
FirstInfo,
SecondInfo,
ThirdInfo,
ForthInfo>;
}
#pragma一次
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
名称空间配置::列表
{
使用ConfigsManager=configs::ConfigsManager<
第一信息,
第二信息,
第三方,
ForthInfo>;
}
1)第一信息,第二信息。。。是一些类型(不要太小)

2)ConfigsManager实际上是std::tuple之类的类型容器。

即:

TypesContainer<FirstType, SecondType...>;
类型容器;
需要将此文件包含在许多其他头文件中,并且增加此文件会以指数方式增加编译时间

我无法从上面的标题推入此容器(ConfigsManager),因此需要从
ConfigsList.hpp
实例化此容器

此外,我不能使用pimpl—它封装了需要在其中创建类实例的其他文件的ConfigsManager方法


目标是在不“重新包含”顶部标题的情况下使用types容器。

如上所述,这是不可能的。除非编译器能够看到
FirstInfo
SecondInfo
ThirdInfo
ForthInfo
ForthInfo
(原文如此)和模板化的
config::ConfigsManager
的定义,否则无法实例化或使用
ConfigsManager
。如果这些内容是在不同的头中定义的,那么ConfigsList.hpp必须包含所有这些头。预编译头会有帮助吗?@TobiasWollgam,这意味着什么?)我已经放弃了,正在使用动态方法(预编译头是一个编译步骤,可能会加快整个编译过程。