gpt4 book ai didi

c++ - 如何在 CMake 中指定链接类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:22 25 4
gpt4 key购买 nike

在我的 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(...) 之前调用适当的 prefer_static()prefer_dynamic() 例程查找包(...)。这具有在静态库不可用时“退回到”共享库的优势,反之亦然。

这不适用于 Windows 构建,因为您总是使用 Visual Studio 链接到 .lib 文件,并且(据我所知)没有直接的方法来确定它是静态库还是动态库。

关于c++ - 如何在 CMake 中指定链接类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16378942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com