gpt4 book ai didi

cmake - 有什么方法可以将 libtool ".la"文件与 cmake "target_link_libraries"一起使用

转载 作者:行者123 更新时间:2023-12-04 11:15:30 24 4
gpt4 key购买 nike

在将库集成到我的 cmake 项目中时,我一直在将库的 .la 文件中的“dependency_libs”复制粘贴到变量中,然后使用“target_link_library”。

我需要以某种方式直接从 .la 文件中获取这个“dependency_libs”变量。有没有办法在 cmake 中做到这一点?如果没有,我总是可以用其他语言编写脚本来使用正则表达式解析文件,然后将其写入文件并将其导入变量。

最佳答案

回答你的问题:

# Assume libtool_file is set somewhere to your .la file.

file(READ "${libtool_file}" contents)
if (contents MATCHES "dependency_libs *= *'([^']*)'")
string(STRIP "${CMAKE_MATCH_1}" deps)
string(REGEX REPLACE " +" ";" deps "${deps}")
target_link_libraries(my_target PRIVATE ${deps})
else ()
message(WARNING "${libtool_file} does not declare dependencies")
endif ()
但我真的会, 真的鼓励你使用更标准的东西,比如 PkgConfig ,CMake 对此有 native 支持。或者更好的是,图书馆自己的 find_package -兼容的配置包及其 imported targets如果它们可用。
对于它的值(value),我只能找到一个,单例 .la我的系统上包含依赖项的文件。该文件是 /usr/lib/x86_64-linux-gnu/libltdl.la并且它包含一个对 -ldl 的依赖(无论如何,可以通过 ${CMAKE_DL_LIBS} 更好地访问)。

关于cmake - 有什么方法可以将 libtool ".la"文件与 cmake "target_link_libraries"一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52573854/

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