我(共同)致力于一个必须针对许多不同编译器和编译器版本的库。例如,我们需要支持Visual Studio 2005到2015以及其他一些(ICC,Clang,GCC,......)。
现在大多数新编译器都添加了新功能,其中一些真正有用。实际上它们非常有用,我们希望默认打开它们。但是我们仍然希望保持与旧版编译器的兼容性。
例如:
Visual Studio 2015引入了控制流保护,有助于防止对库的某些攻击。但是,对于早期的编译器版本来说,这显然是一个未知的选项。
那么我们如何设置我们的.vc(x)proj文件以默认启用新功能(例如控制流保护),同时在较旧的编译器上无警告(不知道新功能)?或者这是不可能的?
答案 0 :(得分:0)
使用make文件系统,而不是vcproj。 vcproj只调用make。
在make文件中,测试目标编译器的版本信息,并适当设置标志。