【问题标题】:android_cmake finds boost include wrongandroid cmake 发现 boost 包含错误
【发布时间】:2014-02-07 10:43:02
【问题描述】:

我发现了 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_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 不是从设置的位置获取 version.hpp,而是从

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

即使我指定的位置确实包含 version.hpp:

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

现在我无法确定发生了什么以及 cmake 在哪里得到了提升.. 有什么建议吗?

【问题讨论】:

    标签: android boost cmake


    【解决方案1】:

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

    Boost_NO_SYSTEM_PATHS - 设置为 ON 以禁用位置搜索 这些提示变量未指定。默认为关闭。

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

    试试,

    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
    

    【讨论】:

    • 它强制 cmake 显示以下消息:找不到 Boost,无法找到 boost 头文件,请设置 BOOST_ROOT 和包含等。即使它们是专门设置的并且存在于调试输出中......可笑.
    • 可能是它找到了它不期望的版本。它期望的版本可能在 android.toolchain.cmake 字段中。尝试更改 cmake 文件并设置 Boost_ADDITIONAL_VERSIONS 以包含您系统上的版本。
    • 我添加了 -DBoost_ADDITIONAL_VERSIONS=1.55(连同 NO_SYSTEM_PATHS=ON),效果还是一样:找不到提升。无论如何,即使没有提及密钥,也可以找到 1.55 版并在 _boost_TEST_VERSIONS 中列出。如果我删除 NO_SYSTEM(但添加了附加),则 boost 将 /usr/local/include/boost/ 目录作为默认目录..
    猜你喜欢
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多