如何在不破坏Visual Studio中的旧编译器的情况下启用新的编译器功能?

时间:2015-07-30 21:39:31

标签: c++ visual-studio project-files

我(共同)致力于一个必须针对许多不同编译器和编译器版本的库。例如,我们需要支持Visual Studio 2005到2015以及其他一些(ICC,Clang,GCC,......)。

现在大多数新编译器都添加了新功能,其中一些真正有用。实际上它们非常有用,我们希望默认打开它们。但是我们仍然希望保持与旧版编译器的兼容性。

例如:
Visual Studio 2015引入了控制流保护,有助于防止对库的某些攻击。但是,对于早期的编译器版本来说,这显然是一个未知的选项。

那么我们如何设置我们的.vc(x)proj文件以默认启用新功能(例如控制流保护),同时在较旧的编译器上无警告(不知道新功能)?或者这是不可能的?

1 个答案:

答案 0 :(得分:0)

使用make文件系统,而不是vcproj。 vcproj只调用make。

在make文件中,测试目标编译器的版本信息,并适当设置标志。