在将库集成到我的 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 ()
Run Code Online (Sandbox Code Playgroud)
但我真的、真的鼓励你使用更标准的东西,比如PkgConfig,CMake 对此有原生支持。或者更好的是,库自己的find_package兼容配置包及其导入的目标(如果可用)。
无论如何,我只能在我的系统上找到一个包含依赖项的单个文件。 .la该文件是并且它包含对(无论如何可以通过 更好地访问)/usr/lib/x86_64-linux-gnu/libltdl.la的单个依赖项。-ldl${CMAKE_DL_LIBS}
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |