我相信我了解有关预编译头文件的基础知识,我想不出为什么不能在库中使用预编译头文件的任何原因,但我被告知这是不可能或不应该的完成(不记得是哪个)。
我有一个项目,其中一个共享库将由多个其他共享库静态链接,我想在共享库内使用预编译头文件作为我的外部 STL/Boost 依赖项,但我不确定这是否可行。我的目标是 OS X 和 Windows 系统,对细节的常见搜索似乎更多地指向涉及 stdafx.h
的 Windows 解决方案,这让我相信使用预编译 header 通常是 Windows 的做法。
我的问题很简单:
我可以/应该在我将静态链接到其他项目的库中使用预编译 header 吗?如果不是,那么对我所有的 STL/Boost 依赖项使用便利 header 是否是一件值得追求的好事?我指的是这样的东西:
// common.h
#pragma once
#include <boost/this>
#include <boost/that>
#include <string>
#include <vector>
#include <other_stl_header>
// Foo.h
#include "common.h"
class Foo { ... }
// Foo.cpp
#include "Foo.h"
...
编辑:我应该说明,我不希望预编译头文件与我正在编译的库以外的任何东西共享。我的问题是关于是否可以创建用于编译那个库的预编译 header 。
最佳答案
一旦完成编译,就不再使用预编译头,它们对链接阶段(包括共享库和任何其他可链接组件)也没有影响。您可以使用它来 boost 共享库的编译,但仅此而已,静态库是编译的结果,使用或不使用预编译头文件。
关于c++ - 预编译头文件是否可以用作将被静态链接的库的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23626161/