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



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

  2. tar xvf cmocka-1.0.1.tar.xz

  3. cd cmocka-1.0.1mkdir buildcd build

  4. sudo cmake ..
    我得到这样的消息:

—配置完成

CMake Warning (dev):

未设置策略CMP0042:默认启用MACOSX_RPATH。执行"cmake——help-policy CMP0042"查询策略详细信息。使用cmake_policy命令设置策略并抑制此警告。

MACOSX_RPATH没有被指定用于以下目标:

cmocka_shared

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

问题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的问题,但我也找不到合适的解决方案。不过,下面是相关线程的列表:

    • 如何在Mac OSX下使用gcc设置可执行文件的运行时路径(-rpath) ?

    • https://stackoverflow.com/questions/29721183/getting -未定义的符号- -建筑- x86 - 64 -时-尝试- -建立在osx

    • 如何配置scons在mac上使用rpath链接?

    • 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")
    

    相关内容

    • 没有找到相关文章

    最新更新