是否有类似include目录别名的概念?

问题描述 投票:5回答:3

在跨平台项目中,我利用了许多第三方库。我最终决定将其源代码包含在我的存储库中,而无需在每个平台上再次下载它们。许可证允许这样做。

要包括这些库中的头文件,我需要指定它们的文件路径。有些库在name/include/name/file.h中有它们,但通常,每个库都带有不同的目录结构。

我想始终以#include "name/file.h"的形式在代码中包含头,其中name是库的名称。但是我既不想修改库的目录结构,也不想将所有标头复制到所需结构的包含目录中。]

是否可以定义诸如包含目录别名之类的内容?例如,子弹物理学

的标头位于bullet/srcSqlite的标头直接位于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标志,以正确的方式生成项目。但是,我认为编译器必须以某种方式意识到这种技术,以使其成为可能。

在跨平台项目中,我利用了许多第三方库。我最终决定将其源代码包含在我的存储库中,而无需在每个平台上再次下载它们。这是...

c++ include cmake cross-platform project
3个回答
5
投票

否;最接近的方法是命令行中的-I选项的集合。


4
投票

简短的答案是“否”。


0
投票

我正在一次构建中构建所有内容(不在软件包中)通过执行以下操作,我设法完全使用Cmake进行了您想要的操作:

© www.soinside.com 2019 - 2024. All rights reserved.