android_cmake发现boost包含错误

android_cmake发现boost包含错误,android,boost,cmake,Android,Boost,Cmake,我发现了android_cmake和boost的奇怪行为。我开始使用cmake 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/boos

我发现了android_cmake和boost的奇怪行为。我开始使用cmake

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变量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
如您所见,boost take version.hpp不是从设置的位置,而是从

/usr/local/include/boost/version.hpp
即使我指定的位置不包含version.hpp:

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

现在我无法确定到底发生了什么,以及cmake在哪里起到了推动作用。。有什么建议吗?

您可能需要强制排除默认搜索

Boost_NO_SYSTEM_path-设置为ON可禁用位置搜索 不由这些提示变量指定。默认设置为关闭

试试看


它强制cmake发送以下消息:找不到Boost,找不到Boost头文件,请设置Boost_根目录和包含等。即使它们已专门设置,并且存在于调试输出中。。。荒谬。可能是它找到了一个它不期望的版本。它期望的版本可能在android.toolchain.cmakefiel中。尝试更改cmake文件并设置
Boost\u ADDITIONAL\u VERSIONS
,以包括系统上的版本。我添加了-DBoost\u ADDITIONAL\u VERSIONS=1.55(以及NO\u system\u path=on),但效果仍然相同:找不到Boost。无论如何,1.55版即使没有提到的密钥也可以找到,并在_boost_TEST_版本中列出。如果我删除了NO_系统(但添加了额外的),那么boost将/usr/local/include/boost/目录作为默认值。。
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