在跨平台项目中,我利用了许多第三方库。我最终决定将其源代码包含在我的存储库中,而无需在每个平台上再次下载它们。许可证允许这样做。
要包括这些库中的头文件,我需要指定它们的文件路径。有些库在name/include/name/file.h
中有它们,但通常,每个库都带有不同的目录结构。
我想始终以#include "name/file.h"
的形式在代码中包含头,其中name是库的名称。但是我既不想修改库的目录结构,也不想将所有标头复制到所需结构的包含目录中。]
是否可以定义诸如包含目录别名之类的内容?例如,子弹物理学
的标头位于bullet/src
,Sqlite的标头直接位于sqlite
,而SFML的标头位于sfml/include/SFML
。我想指定这样的内容:#alias "dependencies/bullet/src" "bullet" #alias "dependencies/sqlite" "sqlite" #alias "dependencies/sfml/include/SFML" "sfml"
使得
#include "sfml/System.hpp"
等于#include "dependencies/sfml/include/SFML/System.hpp"
。
该技术不必处于预处理阶段。例如,它也可以是CMake标志,以正确的方式生成项目。但是,我认为编译器必须以某种方式意识到这种技术,以使其成为可能。
在跨平台项目中,我利用了许多第三方库。我最终决定将其源代码包含在我的存储库中,而无需在每个平台上再次下载它们。这是...
否;最接近的方法是命令行中的-I
选项的集合。
简短的答案是“否”。
我正在一次构建中构建所有内容(不在软件包中)通过执行以下操作,我设法完全使用Cmake进行了您想要的操作: