我有必须在同一个项目中的两个可执行文件之间共享的代码(一个构建命令将同时构建它们)。此代码包含#ifdef
预处理程序语句,这些语句更改了每个项目的工作方式(命令行宏定义用作切换)。
源是抽象,因为缺少某些标头。例如,共享文件Application.cpp
可能包含一个名为gui/MainWindow.h
的文件,该文件在共享目录中不存在但存在于可执行源目录中。或者它可能包含一个名为gui/Local.h
的文件,该文件确实存在于共享目录中。
基本上我需要gui
路径是两个位置的组合。
在unix上我之前只是通过设置一系列文件链接完成了这个,但是这个项目现在将windows作为目标(Visual Studio)。另外,我知道如何使用共享目录结构和设置编译器包含开关来实现这一点,但我希望有一种更简单的方法。
有什么想法吗?
我将CMake用于构建生成,使用GCC和Visual Studio作为编译器。
我已经考虑过为预处理器定义一个目录,但遗憾的是#include
指令无法组合多个令牌来创建文件名。单个名称有效,这可能是让cmake为所有共享文件名吐出宏的选项。
答案 0 :(得分:0)
我真的认为最简单的解决方案是使用包含路径 - 为不同的项目设置不同的路径。查看property sheets以在项目之间共享设置,并大大简化管理。
如果您在unix中使用文件链接,则可以在Windows中使用symbolic links执行相同操作。