为导入的库设置预处理器值的好方法是什么?

时间:2013-08-21 14:57:47

标签: c++ visual-studio ant static-libraries c-preprocessor

如果在其他地方有所涉及,我道歉,但我无法轻易找到这些信息。我正在为我的公司使用现有的库,该库使用预处理器指令来添加和删除专用功能。例如,我们可能有一个IMPORT_OPENBLAS和IMPORT_SPEEX来指示构建需要支持使用OpenBLAS和Speex库。我们还有基于Google测试框架的单元测试,其中一些测试框架需要启用预处理器指令才能运行,这些指令在我们的库中静态链接。我们通常运行单元测试的两个地方是通过Visual Studio(2008,如果这有所不同)和通过Ant,它调用vsbuild.exe来进行构建。

所以,长话短说,我的任务是添加其他功能,例如上面的库。我们有其他项目使用我们的库,特别是不希望打开这些功能,部分原因是依赖性问题,部分是因为他们不想要额外的复杂性。我的第一个冲动是将预处理器指令放入单元测试项目中,因为它无论如何都将我们的库构建为依赖,但这似乎不起作用。是否有任何方法可以标记事物以指示需要打开给定的预处理器命令来编译依赖项目?

另一个替代方法是为单元测试创​​建新的构建目标,专门设置正确的预处理器标志,但我希望尽可能避免这种情况,因为我们已经有10个不同的构建目标,包括不同的链接方法,处理器大小和调试与发布模式以及我之前的一个任务涉及让它们全部重新工作,因为我们的主要版本仅基于其中两个目标,因为没有人已经编译了几个月。

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以简单地拥有一个包含这些定义的头文件,并通过项目属性将其包含在项目的所有文件中。查看项目属性 - >配置属性 - > C / C ++ - >高级 - >力量包括。

换句话说,这个文件将包含在所有项目中。