将两个目录合并到一个虚拟目录中以进行编译/别名包括目录

时间:2011-05-04 06:52:44

标签: c++

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

源是抽象,因为缺少某些标头。例如,共享文件Application.cpp可能包含一个名为gui/MainWindow.h的文件,该文件在共享目录中不存在但存在于可执行源目录中。或者它可能包含一个名为gui/Local.h的文件,该文件确实存在于共享目录中。

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

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

有什么想法吗?


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

我已经考虑过为预处理器定义一个目录,但遗憾的是#include指令无法组合多个令牌来创建文件名。单个名称有效,这可能是让cmake为所有共享文件名吐出宏的选项。

1 个答案:

答案 0 :(得分:0)

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

如果您在unix中使用文件链接,则可以在Windows中使用symbolic links执行相同操作。