MesonBuild: How to define dependency to a library that cannot be found by `pkg-config`?

后端 未结 2 1493
遇见更好的自我
遇见更好的自我 2021-02-13 09:26

My project (in C) has a third party dependency at build time. But the third party library is, by default, installed to /opt/ instead of /lib, and I can

2条回答
  •  情深已故
    2021-02-13 10:20

    As documented here and here

    The main use case for this [declare_dependency()] is in subprojects.

    and

    [dependency()] finds an external dependency ... with pkg-config [or] library-specific fallback detection logic ...

    You can, instead, use find_library() provided by the compiler object and include_directories() . find_library() returns an object just like the one declare_dependency() returns. include_directories() returns an opaque object which contains the directories.

    Assuming you are using a C compiler and your 3rd party library and its header file are /opt/hello/libhello.so and /opt/hello/hello.h, you can do:

    project('myproj', 'c')
    
    cc = meson.get_compiler('c')
    lib_hello = cc.find_library('hello',
                   dirs : ['/opt/hello'])
    inc_hello = include_directories('/opt/hello')
    exec = executable('app',
                      'main.c',
                      dependencies : [lib_hello],
                      include_directories : inc_hello)
    

提交回复
热议问题