如果其他地方对此有报道,我深表歉意,但我无法随时找到信息。我正在为我的公司使用一个现存的库,该库使用预处理器指令来添加和删除专用功能。例如,我们可能有一个IMPORT_OPENBLAS和IMPORT_SPEEX来指示构建需要支持使用OPENBLAS和SPEEX库。我们也有基于谷歌测试框架的单元测试,其中一些需要启用所述预处理器指令才能运行,这些指令在我们的库中静态链接。我们通常运行单元测试的两个地方是通过Visual Studio(如果有区别的话,2008年)和通过Ant,后者调用vsbuild.exe来进行构建。
所以,长话短说,我的任务是添加额外的功能,比如上面的库。我们还有其他项目使用我们的库,特别不希望打开这些功能,部分原因是依赖性问题,部分原因他们不希望增加复杂性。我的第一个冲动是将预处理器指令放入单元测试项目中,因为它无论如何都会将我们的库作为依赖项构建,但这似乎不起作用。有没有任何方法可以标记一些东西,以指示需要打开给定的预处理器命令来编译依赖项目?
另一种选择是为单元测试创建新的构建目标,专门设置正确的预处理器标志,但如果可能的话,我想避免这种情况,因为我们已经有10个不同的构建目标包括不同的链接方法、处理器大小,调试与发布模式,我之前的一项任务是让它们重新工作起来,因为几个月来没有人编译过其中的一些,因为我们的主要发布仅基于其中两个目标。
感谢您提供的任何帮助。
您可以简单地拥有一个包含这些定义的头文件,并通过项目属性将其包含在项目中的所有文件中。请参阅项目属性->配置属性->C/C++->高级->强制包含。
换句话说,这个文件将包含在所有项目中。