将两个目录合并到一个虚拟目录中用于编译/别名包含目录

Merging two directories into one virtual directory for compilation / aliasing include directories

本文关键字:用于 编译 别名 包含目 虚拟 两个 合并 一个      更新时间:2023-10-16

我的代码必须在同一项目中的两个可执行文件之间共享(一个构建命令将构建它们)。此代码包含#ifdef预处理器语句,这些语句改变了它在每个项目中的工作方式(使用命令行宏定义作为开关)。

源是abstract,因为有些标题丢失了。例如,共享文件Application.cpp可能包含一个名为gui/MainWindow.h的文件,该文件不存在于共享目录中,但存在于可执行源目录中。或者它可能包含一个名为gui/Local.h的文件,该文件确实存在于共享目录中。

本质上,我需要gui路径是两个位置的组合。

在unix上,我以前只是通过设置一系列文件链接来实现这一点,但是这个项目现在将windows作为目标(Visual Studio)。此外,我知道如何使用共享目录结构和设置编译器包含开关来做到这一点,但我希望有一个更简单的方法。

任何想法?


我使用CMake生成构建,使用GCC和Visual Studio作为编译器。

我已经看过为预处理器定义一个目录,但不幸的是,#include指令不能组合几个令牌来创建文件名。一个单独的名字可以工作,这可能是一个选项,让cmake为所有共享的文件名吐出宏。

我真的认为最简单的解决方案是使用包含路径-为不同的项目设置不同的路径。查看属性表以在项目之间共享设置,并大大简化管理。

如果你在unix中使用文件链接,你也可以在Windows中使用符号链接。