想象我正在发布一个C++库,它的包含文件位于名为api
的文件夹中。应该如何布置C++ API?
// file: api/mylib/fwd/foo.h
inline int mylib_foo();
// file: api/mylib/impl/foo.h
inline int mylib_foo() { return 42; }
在this question的背景下,这是明智的图书馆建设者始终使用“完整路径”自己(API),包括文件?
// file: api/mylib/all.h
#include "mylib/fwd/foo.h" // as opposed to "fwd/foo.h"
#include "mylib/impl/foo.h" // as opposed to "impl/foo.h"
或者依靠预处理器'经常'首先搜索包含文件夹的事实是否可以接受?
如果您不想将/home/xtofl/libs/mylib/api
添加到编译器的包含路径,而是... #include "/home/xtofl/libs/mylib/api/mylib/all.h"
,或者甚至只是将mylib放在客户端代码旁边。
// file: api/mylib/all.h
#include "fwd/foo.h"
#include "impl/foo.h"
图书馆是否应该引用包括?看着Boost和Qt,他们没有。你总是必须指定包含路径,或者将它们安装到'平常的地方'。 – xtofl