【问题标题】:meson doesn't link library介子不链接库
【发布时间】:2020-07-17 09:55:25
【问题描述】:

我正在尝试修复未在链接库上获取的介子构建。 meson.build 文件有

tz_dep = dependency(
    'date',
    default_options : [ 'use_system_tzdb=true' ],
    fallback: [ 'date', 'tz_dep' ]
)

# ...

executable(
    'waybar',
    src_files,
    dependencies: [
        # ...
        tz_dep
    ],
    include_directories: [include_directories('include')],
    install: true,
)

它确实找到了/usr/lib/x86_64-linux-gnu/cmake/date/dateConfig.cmake。对应的dateTargets-none.cmake

#----------------------------------------------------------------
# Generated CMake target import file for configuration "None".
#----------------------------------------------------------------

# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)

# Import target "date::date-tz" for configuration "None"
set_property(TARGET date::date-tz APPEND PROPERTY IMPORTED_CONFIGURATIONS NONE)
set_target_properties(date::date-tz PROPERTIES
  IMPORTED_LOCATION_NONE "${_IMPORT_PREFIX}/lib/x86_64-linux-gnu/libdate-tz.so.2.4.1"
  IMPORTED_SONAME_NONE "libdate-tz.so.2.4.1"
  )

list(APPEND _IMPORT_CHECK_TARGETS date::date-tz )
list(APPEND _IMPORT_CHECK_FILES_FOR_date::date-tz "${_IMPORT_PREFIX}/lib/x86_64-linux-gnu/libdate-tz.so.2.4.1" )

# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)

但是,介子没有链接/usr/lib/x86_64-linux-gnu/libdate-tz.so.2.4.1

我不确定问题出在介子还是 cmake 配置中。如果需要,我可以提供更多详细信息。

【问题讨论】:

  • 您能否通过在该文件中添加打印语句来验证${_IMPORT_PREFIX} 的值? message(STATUS "_IMPORT_PREFIX: ${_IMPORT_PREFIX}")
  • 我没有任何介子经验,但看起来您可能需要告诉介子您正在处理 cmake 依赖项 (mesonbuild.com/Dependencies.html#cmake)。
  • @StephenNewell 不,不是这样。它发现包没问题,包括路径等。添加method = 'cmake' 不会改变任何事情。

标签: c++ linux cmake meson-build


【解决方案1】:

我现在正在为 waybar 编写一个 ebuild(gentoo 包),并且遇到了与您描述的相同的问题。解决方案在您的meson.build 文件中,它指定了date 依赖不完整。

这是我应用的补丁,然后它可以工作(我不知道介子和其他东西,但这似乎使 waybar 编译):

diff --git a/meson.build b/meson.build
index 5d45a29..dd56c29 100644
--- a/meson.build
+++ b/meson.build
@@ -98,7 +98,7 @@ gtk_layer_shell = dependency('gtk-layer-shell-0',
         required: get_option('gtk-layer-shell'),
         fallback : ['gtk-layer-shell', 'gtk_layer_shell_dep'])
 systemd = dependency('systemd', required: get_option('systemd'))
-tz_dep = dependency('date', default_options : [ 'use_system_tzdb=true' ], fallback: [ 'date', 'tz_dep' ])
+tz_dep = dependency('date', default_options : [ 'use_system_tzdb=true' ], modules : [ 'date::date', 'date::date-tz' ], fallback: [ 'date', 'tz_dep' ])

 prefix = get_option('prefix')
 sysconfdir = get_option('sysconfdir')

也许有帮助!

最好的问候,乔纳斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-05
    • 2023-03-20
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2022-06-13
    • 2022-08-12
    • 2023-04-04
    相关资源
    最近更新 更多