我试图在Mac OSX Yosemite 10.10.3上安装和运行cmocka
库进行单元测试,但是我在RPATH
设置上遇到了一些问题。
更新:
感谢@baf,我能够像这样手动将cmocka.h
包含在我的CMakeLists.txt中:
set(CMAKE_C_FLAGS_DEBUG "-I/usr/local/include/cmocka.h")
然而,为什么我必须手动执行?
我已经尝试了很多不同的安装方法:
我已经做了什么:
从这里下载cmocka:这里。1.0版。
tar xvf cmocka-1.0.1.tar.xz
cd cmocka-1.0.1
、mkdir build
、cd build
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
现在应该安装了吧?我试过跑步
$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
我试着从
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)
使用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
库?
其他说明:
但是没有帮助。我想这是Linux的解决方案,而不是Mac。
当我将-I/usr/local/include
标志添加到我的调试标志中时,我能够成功地编译我的程序(多亏了baf):
set(CMAKE_C_FLAGS_DEBUG "-std=gnu99 -Wall -pedantic -g -I/usr/local/include/cmocka.h")