gpt4 book ai didi

c - 安装 cmocka 时如何处理 Mac OS X 上的 RPATH 问题?

转载 作者:行者123 更新时间:2023-12-02 11:41:27 24 4
gpt4 key购买 nike

我正在尝试在 Mac OSX Yosemite 10.10.3 上安装并运行 cmocka 库进行单元测试,但是我在 RPATH 方面遇到了一些问题设置。

更新:

感谢@baf,我能够像这样手动将 cmocka.h 包含在我的 CMakeLists.txt 中:

set(CMAKE_C_FLAGS_DEBUG "-I/usr/local/include/cmocka.h")

但是,为什么我必须手动执行呢?

<小时/>

我已经尝试了许多不同的安装方法:

到目前为止我所做的事情:

  1. 从这里下载 cmocka:here 。版本 1.0。

  2. tar xvf cmocka-1.0.1.tar.xz

  3. cd cmocka-1.0.1mkdir buildcd build

  4. sudo cmake ..
    我在这里收到这样的消息:

-- Configuring done

CMake Warning (dev):

Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake --help-policy CMP0042" for policy details. Use the cmake_policy command to set the policy and suppress this warning.

MACOSX_RPATH is not specified for the following targets:

cmocka_shared

This warning is for project developers. Use -Wno-dev to suppress it.

问题 #1:如何设置 rpath 以便不会出现上述警告?

  • sudo make

  • sudo make install

  • cmocka 现在应该已经安装了,对吧?

  • <小时/>

    为使用 cmocka 库的程序运行 cmake

    现在我为我的程序运行 cmake ,我的主 CMakeList.txt 文件包含如下行:

    find_library (CMOCKA cmocka)
    if (NOT CMOCKA)
    message (WARNING "Cmocka library not found.")
    endif (NOT CMOCKA)

    但在此阶段警告并未出现,因此我相信 find_libarary(CMOCKA cmocka) 已成功在我的计算机上找到 cmocka

    为我的程序运行make

    运行 make 时出现如下错误:

    fatal error:<br>
    'cmocka.h' file not found<br>
    #include <cmocka.h>
    ^
    1 error generated.

    所以我猜找不到cmocka...

    问题 #2:为什么找不到 cmocka 库?

    <小时/>

    附加说明:

    1. 我尝试过运行

      $ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

    但这并没有帮助。我猜这是 Linux 的解决方案,而不是 Mac 的解决方案。

  • 我尝试从官方文档中的 cmake 中了解 Mac 上的 RAPTH 的相关信息:http://www.cmake.org/Wiki/CMake_RPATH_handling 。然而我了解甚少,无法找到解决问题的方法。

  • 我尝试使用 brew 安装 cmocka,但得到了相同的结果。

  • 此外,我在 SO 上阅读了许多有关 RPATH、链接和 cmocka 的问题,但我也找不到合适的解决方案。不过,这里是相关主题的列表:

  • 我已运行otool -L cmocka。这是我得到的:

    error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: can't open file: cmocka (No such file or directory)
  • 最佳答案

    当我将 -I/usr/local/include 标志添加到我的调试标志时,我能够成功编译我的程序(感谢 baf):

    set(CMAKE_C_FLAGS_DEBUG "-std=gnu99 -Wall -pedantic -g -I/usr/local/include/cmocka.h")

    关于c - 安装 cmocka 时如何处理 Mac OS X 上的 RPATH 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697107/

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