【问题标题】:CMake - Including a file in a library without exposing it to other projectsCMake - 在库中包含文件而不将其暴露给其他项目
【发布时间】:2013-07-26 01:29:59
【问题描述】:

我正在尝试学习 CMake,但遇到了一些小问题。我有一个结构有点像这样的库:

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

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

谢谢!

【问题讨论】:

    标签: cmake shared-libraries


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多