2014-02-07 38 views
2

我發現了android_cmake和boost的奇怪行爲。我使用android_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設置運行cmake。 boost可以通過「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來禁用不受這些變量提示指定位置 搜索。默認是關閉的。

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 
+0

它迫使CMake的爲以下消息:找不到升壓,無法找到提升的頭文件,請將BOOST_ROOT,包括等即使他們是專門設置和出現在調試輸出...可笑。 – etwas77

+0

它可能是它發現它不指望的版本。它期望的版本可能會在android.toolchain.cmake場景中。嘗試更改cmake文件並設置'Boost_ADDITIONAL_VERSIONS'以包含您的系統版本。 – mockinterface

+0

我添加了-DBoost_ADDITIONAL_VERSIONS = 1.55(與NO_SYSTEM_PATHS = ON一起),仍然有同樣的效果:找不到提升。無論如何,即使沒有提及的密鑰,也會在_boost_TEST_VERSIONS中找到版本1.55。如果我刪除NO_SYSTEM(但添加額外的),然後升壓採取/ usr /本地/包括/升壓/目錄爲默認.. – etwas77