2014-02-07 3 views
2

Я обнаружил странное поведение android_cmake и boost. я начинаю CMake с использованиемandroid_cmake находит boost include wrong

cmake ../ -DCMAKE_TOOLCHAIN_FILE=/opt/android/android-cmake/android.toolchain.cmake -DBOOST_ROOT=/opt/android/android-cmake/common-libs/boost -DBOOST_INCLUDEDIR=/opt/android/android-cmake/common-libs/boost/boost-trunk/boost -DBOOST_LIBRARYDIR=/opt/android/android-cmake/common-libs/boost/libs/armeabi-v7a -DBoost_DEBUG=1 

, как вы можете увидеть все 3 подталкивании переменных BOOST_ROOT, BOOST_INCLUDEDIR и BOOST_LIBRARYDIR устанавливаются. ускорение найдено функцией «find_host_package». Ниже приводится часть вывода:

-- [ /opt/sw/cmake-2.8.10.2/share/cmake-2.8/Modules/FindBoost.cmake:646 ] BOOST_ROOT = /opt/android/android-cmake/common-libs/boost 
-- [ /opt/sw/cmake-2.8.10.2/share/cmake-2.8/Modules/FindBoost.cmake:648 ] BOOST_INCLUDEDIR = /opt/android/android-cmake/common-libs/boost/boost-trunk/boost 
-- [ /opt/sw/cmake-2.8.10.2/share/cmake-2.8/Modules/FindBoost.cmake:650 ] BOOST_LIBRARYDIR = /opt/android/android-cmake/common-libs/boost/libs/armeabi-v7a 
-- [ /opt/sw/cmake-2.8.10.2/share/cmake-2.8/Modules/FindBoost.cmake:705 ] Include debugging info: 
-- [ /opt/sw/cmake-2.8.10.2/share/cmake-2.8/Modules/FindBoost.cmake:707 ] _boost_INCLUDE_SEARCH_DIRS = /opt/android/android-cmake/common-libs/boost/boost-trunk/boost;/opt/android/android-cmake/common-libs/boost/include;/opt/android/android-cmake/common-libs/boost;C:/boost/include;C:/boost;/boost/include;/boost;/sw/local/include 
-- [ /opt/sw/cmake-2.8.10.2/share/cmake-2.8/Modules/FindBoost.cmake:734 ] location of version.hpp: /usr/local/include/boost/version.hpp 

, как вы можете видеть, подталкивание принять version.hpp не из множества расположения, а из

/usr/local/include/boost/version.hpp 

даже если мое указанное место делает содержит версию. hpp:

/opt/android/android-cmake/common-libs/boost/boost-trunk/boost/version.hpp 

сейчас я не могу быть уверенным, что происходит и где cmake берет импульс .. любые предложения?

ответ

0

Вам может потребоваться принудительно исключить поиск по умолчанию,

Boost_NO_SYSTEM_PATHS - Установите в положение ON, чтобы отключить поиск в местах не указанных в этих подсказок переменных. Значение по умолчанию: OFF.

http://www.cmake.org/cmake/help/git-master/module/FindBoost.html

Try,

cmake ../ -DCMAKE_TOOLCHAIN_FILE=/opt/android/android-cmake/android.toolchain.cmake -DBOOST_ROOT=/opt/android/android-cmake/common-libs/boost -DBOOST_INCLUDEDIR=/opt/android/android-cmake/common-libs/boost/boost-trunk/boost -DBOOST_LIBRARYDIR=/opt/android/android-cmake/common-libs/boost/libs/armeabi-v7a -DBoost_DEBUG=1 -DBoost_NO_SYSTEM_PATHS=ON 
+0

он заставил CMake для следующего сообщения: Не удалось найти подталкивание, не может найти файлы заголовки подталкивания, пожалуйста, установите BOOST_ROOT и включает в себя и т.д. Несмотря на то, что они специально установить и присутствовать в отладочном выходе ... Смешно. – etwas77

+0

Может случиться так, что он найдет версию, которую она не ожидает. Версии, которые он ожидает, вероятно, будут находиться в файле android.toolchain.cmake. Попробуйте изменить файл cmake и установите 'Boost_ADDITIONAL_VERSIONS', чтобы включить версию, имеющуюся в вашей системе. – mockinterface

+0

i добавил -DBoost_ADDITIONAL_VERSIONS = 1.55 (вместе с NO_SYSTEM_PATHS = ON), все тот же эффект: не удалось найти повышение. в любом случае версия 1.55 найдена даже без упомянутого ключа и указана в _boost_TEST_VERSIONS. и если я удалю NO_SYSTEM (но добавлю ДОПОЛНИТЕЛЬНО), то форсирует значение default/usr/local/include/boost/по умолчанию. – etwas77

Смежные вопросы