安装 cmocka 时如何处理 Mac OS X 上的 RPATH 问题?
How to handle problems with RPATH on Mac OS X while installing cmocka?
我正在尝试安装 运行 cmocka
库以在 Mac OSX Yosemite 10.10.3 上进行单元测试,但是 RPATH
设置有一些问题。
更新:
感谢@baf,我能够像这样手动将 cmocka.h
包含在我的 CMakeLists.txt 中:
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 ..
我在这里收到这样的消息:
-- Configuring done
CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake --help-policy CMP0042" for policy details. Use the cmake_policy command to set the policy and suppress this warning.
MACOSX_RPATH is not specified for the following targets:
cmocka_shared
This warning is for project developers. Use -Wno-dev to suppress it.
问题 #1:如何设置 rpath
才能不出现上述警告?
sudo make
sudo 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
我的程序。
当 运行ning 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.
我试图从 cmake
中 Mac 上的官方文档中学习一些关于 RAPTH
的知识:http://www.cmake.org/Wiki/CMake_RPATH_handling。但是我了解的很少,我无法为我的问题想出解决方案。
我尝试使用 brew
安装 cmocka
但我得到了相同的结果。
此外,我在 SO 上阅读了很多关于 RPATH
、链接和 cmocka
的问题,但我也找不到合适的解决方案。不过,这里是相关主题的列表:
How to set the runtime path (-rpath) of an executable with gcc under Mac 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")
我正在尝试安装 运行 cmocka
库以在 Mac OSX Yosemite 10.10.3 上进行单元测试,但是 RPATH
设置有一些问题。
更新:
感谢@baf,我能够像这样手动将 cmocka.h
包含在我的 CMakeLists.txt 中:
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 ..
我在这里收到这样的消息:
-- Configuring done
CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake --help-policy CMP0042" for policy details. Use the cmake_policy command to set the policy and suppress this warning.
MACOSX_RPATH is not specified for the following targets:
cmocka_shared
This warning is for project developers. Use -Wno-dev to suppress it.
问题 #1:如何设置 rpath
才能不出现上述警告?
sudo
make
sudo
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
我的程序。
当 运行ning 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.
我试图从
cmake
中 Mac 上的官方文档中学习一些关于RAPTH
的知识:http://www.cmake.org/Wiki/CMake_RPATH_handling。但是我了解的很少,我无法为我的问题想出解决方案。我尝试使用
brew
安装cmocka
但我得到了相同的结果。此外,我在 SO 上阅读了很多关于
RPATH
、链接和cmocka
的问题,但我也找不到合适的解决方案。不过,这里是相关主题的列表:How to set the runtime path (-rpath) of an executable with gcc under Mac 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")