我试图在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.1
,mkdir build
和cd 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/