3

我正在尝试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:这里。1.0 版。

  2. tar xvf cmocka-1.0.1.tar.xz

  3. cd cmocka-1.0.1,mkdir buildcd build

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

-- 配置完成

CMake 警告(开发):

未设置策略 CMP0042:MACOSX_RPATH 默认启用。运行“cmake --help-policy CMP0042”以获取策略详细信息。使用 cmake_policy 命令设置策略并禁止显示此警告。

未为以下目标指定 MACOSX_RPATH:

cmocka_shared

此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

问题#1:如何设置,rpath以便没有像上面那样的警告?

  1. 须藤make

  2. 须藤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

运行时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. 我试图从他们的官方文档中了解RAPTH有关 Mac 的信息:http: //www.cmake.org/Wiki/CMake_RPATH_handling。但是我了解的很少,我无法为我的问题提出解决方案。cmake

  2. 我试过安装cmockausingbrew但我得到了相同的结果。

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

  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)
    
4

1 回答 1

0

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

set(CMAKE_C_FLAGS_DEBUG "-std=gnu99 -Wall -pedantic -g -I/usr/local/include/cmocka.h")
于 2016-08-31T22:07:28.177 回答