--whole-archive 和 --no-whole-archive的区别

参考gcc和ld 中的参数 --whole-archive 和 --no-whole-archive

CMake中有时候会碰到 链接-Wl以及–whole-archive,它并不是一个库,而是gcc的编译选项

if(NOT MSVC AND NOT APPLE)
  set(BEGIN_WHOLE_ARCHIVE -Wl,--whole-archive)
  set(END_WHOLE_ARCHIVE -Wl,--no-whole-archive)

set(CPP_EXAMPLE_LIBS
  ${BEGIN_WHOLE_ARCHIVE} mxnet_static ${END_WHOLE_ARCHIVE}
  ${BEGIN_WHOLE_ARCHIVE} dmlc ${END_WHOLE_ARCHIVE}
  ${mxnet_LINKER_LIBS}
  )

target_link_libraries(lenet ${CPP_EXAMPLE_LIBS})

CMake中的 --whole-archive以及–no-whole-archive两者都是编译器选项,需要配合使用-Wl传递给编译器。 --whole-archive选项作用是设置连接器将库中的符号全部加载到链接的库中,–no-whole-archive表示关闭编译器。

你可能感兴趣的:(C++编程,CMake,whole-archive)