CMake:在静态库上设置链接器标志,供消费者在链接时使用(Visual Studio)

时间:2015-10-22 21:15:10

标签: c++ visual-c++ linker cmake

我有以下情况:静态库MyStaticLib取决于FFmpeg项目的几个库(libavformat等)。

FFmpeg库与“/ SAFESEH:NO”选项链接(不是我),这意味着链接到它们的任何图像(通过它们的导入库)也必须使用相同的选项链接(不能做)所以使链接器中止“LNK2026:模块不安全SAFESEH图像”。)

我已经尝试了所有我能想到的东西,但是我没有找到一种方法将这个选项附加到我的MyStaticLib,使其传播给消费者。

这看起来很奇怪,因为CMake确实为编译器选项提供了传播给使用者的方法:与target_compile_options()选项一起使用的命令PUBLIC就是这样做的。

链接器标志没有类似的功能吗?

1 个答案:

答案 0 :(得分:3)

VC ++ compilerlinker都接受 正斜杠(/)和短划线( - )作为选项说明符。 因此,您可以使用以下命令向MyStaticLib目标添加链接器选项,并将该选项传播给MyStaticLib使用者:

Integer?

或者如果你的构建配置也支持其他编译器:

target_link_libraries(MyStaticLib PUBLIC "-SAFESEH:NO")