Я пытаюсь установить и запустить библиотеку 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 отсюда: здесь. Версия 1.0.
tar xvf cmocka-1.0.1.tar.xz
cd cmocka-1.0.1
,mkdir build
иcd build
sudo cmake ..
Я получаю вот такое сообщение:
-- Настройка выполнена
Предупреждение CMake (разработчик):
Политика 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
на Mac вcmake
из их официальной документации здесь: http://www.cmake.org/Wiki/CMake_RPATH_handling. Однако я очень мало понял и не смог найти решение своей проблемы.Я пытался установить
cmocka
с помощьюbrew
, но результат тот же.Кроме того, я прочитал много вопросов в SO о
RPATH
, ссылках иcmocka
, но также не нашел подходящего решения. Тем не менее, вот список связанных тем:- #P30# <блочная цитата>
блочная цитата>error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: can't open file: cmocka (No such file or directory)
cmocka.h
не входит в путь включения компилятора. Попробуйте добавить-I/path/to/the/header
в параметры компилятора. - person baf   schedule 07.06.2015cmocka.h
в/usr/local/include/cmocka.h
. Я установил такие флаги для своей отладочной сборки:set(CMAKE_C_FLAGS_DEBUG "-std=gnu99 -Wall -pedantic -g -I/usr/local/include/cmocka.h")
. Однако при запускеmake
cmocka.h
все еще не найдено. Что я делаю неправильно? - person Mateusz Piotrowski   schedule 07.06.2015-I/usr/local/include
- person baf   schedule 07.06.2015-I/usr/local/include
... Должен ли он автоматически находить cmocka? Какова рольRPATH
здесь? - person Mateusz Piotrowski   schedule 07.06.2015/usr/local/include
не входит в путь поиска вашего компилятора.Rpath
может помочь найти библиотеки, если они установлены в нестандартном месте, но не заголовки. - person baf   schedule 07.06.2015cmake
был успешным) Значит, с моими настройками RPATH все в порядке, верно? Проблема заключается в том, что компилятору сложно найти правильные заголовки, я прав? Если да, то что я должен искать, чтобы узнать об этом и исправить? Спасибо! - person Mateusz Piotrowski   schedule 07.06.2015