CMake - 在库中包含文件而不将其暴露给其他项目

时间:2013-07-26 01:29:59

标签: cmake shared-libraries

我正在努力学习CMake,但我遇到了一点打嗝。我有一个结构有点像这样的库:

LibProj
| include
| | public1.h
| | public2.h
| library
| | public1.cpp
| | public2.cpp

现在,假设我想要一个.h文件,该文件可能与.cpp文件相关联,也可能不与我想要仅由库中的文件使用的.cpp文件相关联。也就是说,我不希望它暴露给使用该库的项目。有没有办法做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:2)

典型的解决方案是将内部资源移动到另一个目录:

LibProj
| include
| | public1.h
| internal
| | private1.h

然后只将internal文件夹添加为库中的include目录,并确保它不会复制到install time。通常,不允许从目录中包含一个头文件但不允许另一个头文件。大多数(如果不是全部)编译器只允许指定包含目录,而不是单个包含文件。

相关问题