在我的CMake脚本中,我需要为不同的库指定我的项目链接,
gcc的不同类型的链接.众所周知,对于这种混合使用-Wl,-Bstatic和-Wl,-Bdynamic选项.但是有可能在cmake脚本中以某种方式指定它吗? 最佳答案 我们使用一些宏来调整CMake在
Linux / MacOSX上的首选搜索顺序,以在动态和静态链接库之间切换
macro( prefer_static )
if( NOT WIN32 )
list( REMOVE_ITEM CMAKE_FIND_LIBRARY_SUFFIXES ".a" )
list( INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 ".a" )
endif()
endmacro()
macro( prefer_dynamic )
if( NOT WIN32 )
list( REMOVE_ITEM CMAKE_FIND_LIBRARY_SUFFIXES ".a" )
list( APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".a" )
endif()
endmacro()
然后我们在调用find_library(…)或find_package(…)之前调用相应的prefer_static()或prefer_dynamic()例程.当静态库不可用时,这具有在共享库上“退回”的优点,反之亦然.
这对Windows构建不起作用,因为您总是使用Visual Studio和(AFAIK)链接到.lib文件,没有一种直接的方法来确定它是静态库还是动态库.