我想创建一个链接SFML
库和其他库的动态/静态库。我现在的问题是,在项目中取消我的图书馆时,我必须确保SFML includes
可用于该项目。
我可以以某种方式删除对第三方标题的依赖吗?
header-only
库怎么样?
其他库如何处理这个问题(使用SFML
时,即使SFML
取决于其他库,我也只需要它们的标题)
答案 0 :(得分:1)
您必须重新组织头文件并重新构建代码。您需要有两组头文件:
用于构建库的内部头文件,这些头文件包含和引用SFML
的头文件,类和资源。
构成图书馆界面的公共标题文件。
您的图书馆仅安装公共集。公共头文件不包含SFML
头文件,并且它们不引用任何SFML
类。
您的公共头文件和类通常会声明但不定义内部类和指向它们的指针。内部类仅在您自己的内部头文件中定义。
你应该花些时间查看一些大型流行的C ++库中的头文件。您经常会找到指向公共头文件中未定义的内部类的指针和其他引用。它们是库使用的内部类,不会公开。
即使很多C库也是这样构建的。