QiBuild/CMake 找不到 BOOST_FILESYSTEM

QiBuild/CMake cannot not find BOOST_FILESYSTEM

我正在尝试从 Aldebaran 构建 C++ 示例,如 helloworld 和 sayhelloworld,但 qiBuild 一直说找不到 BOOST_FILESYSTEM。 Boost 已安装并正常工作,我在 Visual Studio.

中用其他一些项目对其进行了测试

这是运行后的错误 qibuild configure -c atom1145:

[WARN ]:  Nested worktrees detected:
d:\ald_sdk\naoqi-sdk-1.14.5-win32-vs2010\doc\examples is already in a worktree
(in d:\ald_sdk)

Current build worktree: d:\ald_sdk\naoqi-sdk-1.14.5-win32-vs2010\doc\examples
Using toolchain: atom1145
Build type: Debug
* (1/1) Configuring sayhelloworld
-- Using qibuild 3.7.1
-- Binary: sayhelloworld
CMake Error at D:/Programs/CMake/share/cmake-3.1/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
  Could NOT find BOOST_FILESYSTEM (missing: BOOST_FILESYSTEM_LIBRARIES)
Call Stack (most recent call first):
  D:/Programs/CMake/share/cmake-3.1/Modules/FindPackageHandleStandardArgs.cmake:374 (_FPHSA_FAILURE_MESSAGE)
  d:/Programs/Python27/share/cmake/qibuild/find.cmake:361 (find_package_handle_standard_args)
  d:/Programs/Python27/share/cmake/qibuild/find.cmake:269 (_qi_call_fphsa)
  d:/Programs/Python27/share/cmake/qibuild/modules/boostutils.cmake:39 (export_lib)
  d:/Programs/Python27/share/cmake/qibuild/modules/boost_filesystem-config.cmake:9 (boost_flib)
  d:/Programs/Python27/share/cmake/qibuild/internal/uselib.cmake:80 (find_package)
  d:/Programs/Python27/share/cmake/qibuild/internal/uselib.cmake:94 (_qi_use_lib_get_deps)
  d:/Programs/Python27/share/cmake/qibuild/internal/uselib.cmake:94 (_qi_use_lib_get_deps)
  d:/Programs/Python27/share/cmake/qibuild/internal/uselib.cmake:94 (_qi_use_lib_get_deps)
  d:/Programs/Python27/share/cmake/qibuild/internal/uselib.cmake:94 (_qi_use_lib_get_deps)
  d:/Programs/Python27/share/cmake/qibuild/internal/uselib.cmake:158 (_qi_use_lib_get_deps)
  d:/Programs/Python27/share/cmake/qibuild/stage.cmake:246 (_qi_use_lib_internal)
  CMakeLists.txt:17 (qi_use_lib)


-- Configuring incomplete, errors occurred!
See also "D:/ALD_SDK/naoqi-sdk-1.14.5-win32-vs2010/doc/examples/core/sayhelloworld/build-atom1145/CMakeFiles/CMakeOutput.log".
See also "D:/ALD_SDK/naoqi-sdk-1.14.5-win32-vs2010/doc/examples/core/sayhelloworld/build-atom1145/CMakeFiles/CMakeError.log".
[ERROR]:  ConfigureFailed Error occurred when configuring project sayhelloworld

Boost编译后得到如下路径:

The following directory should be added to compiler include paths:

    D:/Programs/boost_1_57_0

The following directory should be added to linker library paths:

    D:\Programs\boost_1_57_0\stage\lib

这些不是默认路径,我想这会导致一些问题。

在 CMakeCache.txt 中,我发现 Boost 条目是 "cleared":

//The directory containing a CMake configuration file for BOOST.
BOOST_DIR:PATH=d:/Programs/Python27/share/cmake/qibuild/modules

//The directory containing a CMake configuration file for BOOST_FILESYSTEM.
BOOST_FILESYSTEM_DIR:PATH=d:/Programs/Python27/share/cmake/qibuild/modules

//Cleared.
BOOST_FILESYSTEM_EXECUTABLE:STRING=

//Cleared.
BOOST_FILESYSTEM_EXECUTABLE_DEBUG:STRING=

//Cleared.
Boost_DEFINITIONS:STRING=

//Cleared.
Boost_EXECUTABLE:STRING=

//Cleared.
Boost_EXECUTABLE_DEBUG:STRING=

//Boost filesystem library (debug)
Boost_FILESYSTEM_LIBRARY_DEBUG:FILEPATH=Boost_FILESYSTEM_LIBRARY_DEBUG-NOTFOUND

//Boost filesystem library (release)
Boost_FILESYSTEM_LIBRARY_RELEASE:FILEPATH=Boost_FILESYSTEM_LIBRARY_RELEASE-NOTFOUND

//Path to a file.
Boost_INCLUDE_DIR:PATH=D:/ALD_SDK/naoqi-sdk-1.14.5-win32-vs2010/include

//Cleared.
Boost_INCLUDE_DIRS:STRING=

//Cleared.
Boost_LIBRARIES:STRING=

我试过像这样向 CMakeLists.txt 添加一些变量,但没有帮助:

set(Boost_DEBUG true)
set(BOOST_ROOT "D:/Programs/boost_1_57_0")
set(BOOST_INCLUDEDIR "D:/Programs/boost_1_57_0/boost")
set(BOOST_LIBRARYDIR "D:/Programs/boost_1_57_0/stage/lib")

非常感谢任何帮助!

这是来自 Aldebaran 支持的解决方案:

windows 的 NAOqi 1.14.5 C++ SDK 和最新版本的 qibuild 似乎有些不兼容。

在我这边,我已经用最新版本的 qibuild 进行了测试,它给了我和你一样的错误。

我现在让我们的团队更新文档。 同时,我可以向您建议一个解决方法,即使用卸载 qibuild pip uninstall qibuild 并重新安装适用于 windows

的 NAOqi 1.14.5 C++ SDK 版本
pip install qibuild==3.5.1

这个应该可以用。