DLDR Как мне указать cmake на библиотеку boost-python3?Cmake не определяет его автоматически.
Я пытаюсь собрать caffe для Python 3.6, используя предоставленный cmake.
Мои системные характеристики:
- Python 3.6.5, пользовательская версия Anaconda (64-разрядная версия)
- Mac OS 10.13.6
- Нет CUDA
У меня естьустановка boost с помощью brew, например
brew install boost boost-python3
Я вижу библиотеки boost, используя find / -name libboost* 2>/dev/null
.Они встречаются в трех каталогах
/usr/local/Cellar/boost/1.67.0_1/lib/
/usr/local/lib/
-> символическая ссылка выше - boost-python3 находится в
/usr/local/Cellar/boost-python/1.67.0/lib/
Если я запускаю cmake -DCMAKE_PREFIX_PATH=<anaconda_env_path> -D python_version=3
, я получаю это в верхней части вывода
-- Boost version: 1.67.0
-- Found the following Boost libraries:
-- system
-- thread
-- filesystem
-- chrono
-- date_time
-- atomic
Но дальше, я также получаю
CMake Warning at /Users/Mauceri/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1723 (message):
No header defined for python-py365; skipping header check
Call Stack (most recent call first):
cmake/Dependencies.cmake:157 (find_package)
CMakeLists.txt:49 (include)
-- Could NOT find Boost
CMake Warning at /Users/Mauceri/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1723 (message):
No header defined for python-py36; skipping header check
Call Stack (most recent call first):
cmake/Dependencies.cmake:164 (find_package)
CMakeLists.txt:49 (include)
-- Could NOT find Boost
CMake Warning at /Users/Mauceri/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1723 (message):
No header defined for python-py3; skipping header check
Call Stack (most recent call first):
cmake/Dependencies.cmake:164 (find_package)
CMakeLists.txt:49 (include)
-- Could NOT find Boost
-- Could NOT find Boost
-- Python interface is disabled or not all required dependencies found. Building without it...
По аналогии с Cmake не находит Boost , я пытался добавить
-DBOOST_ROOT=/usr/local/Cellar/boost/1.67.0_1/lib/ -DBoost_DEBUG=1
в команду cmake.В полученном выводе следующее повторяется три раза с boost_python-py365, boost_python-py36, boost_python-py3 и boost_python:
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1121 ] _boost_TEST_VERSIONS = 1.67.0;1.67;1.66.0;1.66;1.65.1;1.65.0;1.65;1.64.0;1.64;1.63.0;1.63;1.62.0;1.62;1.61.0;1.61;1.60.0;1.60;1.59.0;1.59;1.58.0;1.58;1.57.0;1.57;1.56.0;1.56;1.55.0;1.55;1.54.0;1.54;1.53.0;1.53;1.52.0;1.52;1.51.0;1.51;1.50.0;1.50;1.49.0;1.49;1.48.0;1.48;1.47.0;1.47;1.46.1;1.46.0;1.46
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1123 ] Boost_USE_MULTITHREADED = TRUE
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1125 ] Boost_USE_STATIC_LIBS =
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1127 ] Boost_USE_STATIC_RUNTIME =
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1129 ] Boost_ADDITIONAL_VERSIONS =
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1131 ] Boost_NO_SYSTEM_PATHS =
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1199 ] Declared as CMake or Environmental Variables:
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1201 ] BOOST_ROOT = /usr/local/Cellar/boost/1.67.0_1/include/
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1203 ] BOOST_INCLUDEDIR =
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1205 ] BOOST_LIBRARYDIR =
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1207 ] _boost_TEST_VERSIONS = 1.67.0;1.67;1.66.0;1.66;1.65.1;1.65.0;1.65;1.64.0;1.64;1.63.0;1.63;1.62.0;1.62;1.61.0;1.61;1.60.0;1.60;1.59.0;1.59;1.58.0;1.58;1.57.0;1.57;1.56.0;1.56;1.55.0;1.55;1.54.0;1.54;1.53.0;1.53;1.52.0;1.52;1.51.0;1.51;1.50.0;1.50;1.49.0;1.49;1.48.0;1.48;1.47.0;1.47;1.46.1;1.46.0;1.46
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1306 ] location of version.hpp: /usr/local/Cellar/boost/1.67.0_1/include/boost/version.hpp
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1330 ] version.hpp reveals boost 1.67.0
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1416 ] guessed _boost_COMPILER =
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1426 ] _boost_MULTITHREADED = -mt
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1502 ] _boost_RELEASE_ABI_TAG = -
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1504 ] _boost_DEBUG_ABI_TAG = -d
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1567 ] _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/local/Cellar/boost/1.67.0_1/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH_boost_LIBRARY_SEARCH_DIRS_DEBUG = /usr/local/Cellar/boost/1.67.0_1/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1756 ] Searching for PYTHON_LIBRARY_RELEASE: boost_python-mt-1_67;boost_python-mt;boost_python
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:400 ] Boost_LIBRARY_DIR_RELEASE = /usr/local/Cellar/boost/1.67.0_1/lib _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/local/Cellar/boost/1.67.0_1/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1809 ] Searching for PYTHON_LIBRARY_DEBUG: boost_python-mt-d-1_67;boost_python-mt-d;boost_python-mt;boost_python
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:400 ] Boost_LIBRARY_DIR_DEBUG = /usr/local/Cellar/boost/1.67.0_1/lib _boost_LIBRARY_SEARCH_DIRS_DEBUG = /usr/local/Cellar/boost/1.67.0_1/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
[ /Users/me/anaconda/share/cmake-3.11/Modules/FindBoost.cmake:1883 ] Boost_FOUND = 1
Could NOT find Boost
Boost version: 1.67.0
Boost include path: /usr/local/Cellar/boost/1.67.0_1/include
Could not find the following Boost libraries:
boost_python
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.
Поэтому я думаю, что путь boost-python отсутствует.Я также попытался добавить -DBOOST_LIBRARYDIR
, но это ничего не изменило.
Документация FindBoost содержит этот комментарий о boost-python
Обратите внимание, что для компонентов Boost Python требуется суффикс версии Python (Boost 1.67 и более поздние), например, python36или python27 для версий, построенных на Python 3.6 и 2.7 соответственно.Это также относится к дополнительным компонентам, использующим Python, включая mpi_python и numpy.В более ранних выпусках Boost могут использоваться суффиксы, относящиеся к дистрибутиву, такие как 2, 3 или 2.7.Они также могут использоваться в качестве суффиксов, но учтите, что они не переносимы.
Я заметил, что библиотеки boost-python3 имеют суффикс 37 (libboost_python37.a), поэтому я также попытался использовать anacondaсреда с Python 3.7, но те же ошибки сохранились.
Как мне заставить мой cmake найти библиотеки boost-python3?