【问题标题】:How can I tell Meson that a cmake subproject shall generate position-independent code (PIC)?我如何告诉 Meson 一个 cmake 子项目应该生成与位置无关的代码(PIC)?
【发布时间】:2021-05-20 12:57:48
【问题描述】:

我有一个用于共享库的 Meson 项目。它使用了一个 CMake 子项目,它提供了一个静态库:

cmake = import('cmake')
sub_prj = cmake_subproject('some_subproject-1.0.0')
sub_dep = sub_prj.dependency('static_sublib')
...
my_lib = library('my_lib', ..., dependencies : sub_dep)

介子给我以下错误:

ERROR: Can't link non-PIC static library 'cm_gsl' into shared library 'toolbox'. Use the 'pic' option to static_library to build with PIC.

如何告诉 CMake 模块静态库必须有位置无关代码?

【问题讨论】:

    标签: cmake shared-libraries meson-build position-independent-code


    【解决方案1】:

    应该可以使用下面的代码:

    cmake = import('cmake')
    cmake_opts = cmake.subproject_options()
    cmake_opts.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': true})
    sub_proj = cmake.subproject('projectname', options: cmake_opts)
    my_lib = sub_proj.dependency('lib-target')
    

    CMake 子项目的配置选项的文档可以在这里找到:https://mesonbuild.com/CMake-module.html#configuration-options

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 2021-05-07
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      相关资源
      最近更新 更多