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

How to handle problems with RPATH on Mac OS X while installing cmocka?

我正在尝试安装 运行 cmocka 库以在 Mac OSX Yosemite 10.10.3 上进行单元测试,但是 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 才能不出现上述警告?

  1. sudo make

  2. sudo make install

  3. cmocka现在应该安装了吧?


运行 cmake 我的程序正在使用 cmocka 库。

所以现在我的程序 运行 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 我的程序。

当 运行ning 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.

  1. 我试图从 cmake 中 Mac 上的官方文档中学习一些关于 RAPTH 的知识:http://www.cmake.org/Wiki/CMake_RPATH_handling。但是我了解的很少,我无法为我的问题想出解决方案。

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

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

    • How to set the runtime path (-rpath) of an executable with gcc under Mac OSX?

    • How to configure scons to link using rpath on mac?

    • mariadb install failure: make (Mac OSX 10.6.8)

  4. 我 运行 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")