-1

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

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

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

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

4

1 回答 1

0

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

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

于 2015-07-30T22:03:16.917 回答