cmake中添加引⽤动态链接_如何使⽤cmake⽣成基于静态库
的动态链接库
在⼯程搭建时,可能会有将静态库链接成动态库的需求,如出于代码保护的⾓度,某些模块会发布.a扩展名的静态库,我们要将多个这样的静态库链接成⼀个动态库。但与直接link⽬标⽂件不同的是,ld以默认参数执⾏时,并把静态库中没有⽤到的函数过滤掉,导致⽣成的so并未包含所要的函数,因此要加上--whole-archive参数,以保证所有的函数都包含在⽣成的so中。
在使⽤cmake时,的写法如下:
add_library(为什么现在都用cmake
${MODULE_NAME}
SHARED
${CMAKE_SOURCE_DIR}/builttime.c #要⽣成⼀个so,⾄少要包含⼀个源⽂件,实在没有可以把库的编译时间戳打到这⼉。
)
target_link_libraries(
${MODULE_NAME}
${${MODULE_NAME}_EXTRA_LDFLAGS}
"-Wl,--whole-archive" #告诉编译器,从这⾥开始,所有的库的内容都包含到so中
${LOCAL_MODULES} #可以是以源代码⽣成的静态库
${PREBUILT_MODULES} #可以是预先⽣成的静态库
"-Wl,--no-whole-archive" #告诉编译器,从这⾥开始,以后的库的内容不⽤都包含到so中
)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论