我试图在Mac OSX Yosemite 10.10.3上安装并运行cmocka库以进行单元测试,但是RPATH设置存在一些问题。

更新:

多亏@baf,我能够像这样在我的CMakeLists.txt中手动包含cmocka.h

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


但是,为什么要手动进行呢?



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

到目前为止,我所做的是:


从此处下载cmocka:here。版本1.0。
tar xvf cmocka-1.0.1.tar.xz
cd cmocka-1.0.1mkdir buildcd build
sudo cmake ..
我在这里收到这样的消息:



-配置完成

CMake警告(dev):

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

未为以下目标指定MACOSX_RPATH:

cmocka_shared

此警告是针对项目开发人员的。使用-Wno-dev禁止它。


问题1:如何设置rpath,以防止出现以上警告?


须藤make
须藤make install
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库?



补充笔记:


我试过跑步

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



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


我尝试从RAPTH的官方文档中(http://www.cmake.org/Wiki/CMake_RPATH_handling)中了解有关Mac上cmake的一些信息。但是,我了解得很少,因此无法为我的问题提供解决方案。
我尝试使用cmocka安装brew,但是得到了相同的结果。
此外,我在SO上已经阅读了许多有关RPATH,链接和cmocka的问题,但是我也找不到合适的解决方案。不过,这是相关线程的列表:


How to set the runtime path (-rpath) of an executable with gcc under Mac OSX?
https://stackoverflow.com/questions/29721183/getting-undefined-symbols-for-architecture-x86-64-when-trying-to-build-on-osx
How to configure scons to link using rpath on mac?
mariadb install failure: make (Mac OSX 10.6.8)

我已经运行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/

10-12 20:38