JPN*_*gon 0 c++ linker cmake visual-c++
我有以下情况:一个静态库MyStaticLib
取决于 FFmpeg 项目(libavformat
等)的几个库。
FFmpeg 库(不是由我)与“/SAFESEH:NO”选项链接,这意味着链接到它们的任何图像(通过它们的导入库)也必须与相同的选项链接(不这样做会使链接器因“LNK2026:模块对 SAFESEH 图像不安全”而中止)。
我已经尝试了所有我能想到的方法,但是我还没有找到一种方法可以将该选项附加到我的选项MyStaticLib
中,从而使其传播给消费者。
这看起来很奇怪,因为 CMake 确实提供了将编译器选项传播给消费者的方法:target_compile_options()
与该PUBLIC
选项一起使用的命令正是这样做的。
链接器标志没有类似的功能吗?
VC++编译器和链接器接受正斜杠 (/) 和破折号 (–) 作为选项说明符。因此,您可以使用以下命令将链接器选项添加到 MyStaticLib 目标并将该选项传播到 MyStaticLib 使用者:
target_link_libraries(MyStaticLib PUBLIC "-SAFESEH:NO")
Run Code Online (Sandbox Code Playgroud)
或者如果您的构建配置也支持其他编译器:
target_link_libraries(MyStaticLib PUBLIC "$<$<CXX_COMPILER_ID:MSVC>:-SAFESEH:NO>")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2475 次 |
最近记录: |