首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AirSim/Unity构建在macOS上(“boost/fileystem.hpp”文件未找到)

AirSim/Unity构建在macOS上(“boost/fileystem.hpp”文件未找到)
EN

Stack Overflow用户
提问于 2020-03-18 16:00:52
回答 1查看 406关注 0票数 2

我正试图在MacOS Catalina上安装AirSim/Unity。当我运行Unity/build.sh时,会得到一个致命的错误:

代码语言:javascript
复制
In file included from /Users/nfirbas/Documents/AirSim/Unity/AirLibWrapper/AirsimWrapper/Source/Logger.cpp:3:
/Users/nfirbas/Documents/AirSim/Unity/AirLibWrapper/AirsimWrapper/Source/Logger.h:6:11: fatal error: 'boost/filesystem.hpp' file not found
        #include <boost/filesystem.hpp>
                 ^~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
make[2]: *** [CMakeFiles/AirsimWrapper.dir/Source/Logger.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....

我用brew安装了boost。这是我第一次使用brew,所以我假设我需要编辑我的CMakeList.txt。我自己试过换,但没能用。

我的CMakeLists.txt:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.5.0)

if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
    set(MACOSX TRUE)
endif()

find_path(AIRSIM_ROOT NAMES AirSim.sln PATHS ".." "../.." "../../.." "../../../.." "../../../../.." "../../../../../..")
message(AirSim Root directory: ${AIRSIM_ROOT})

LIST(APPEND CMAKE_MODULE_PATH "${AIRSIM_ROOT}/cmake/cmake-modules")
LIST(APPEND CMAKE_MODULE_PATH "${RPC_SOURCE_DIR}/cmake")
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")


INCLUDE("${AIRSIM_ROOT}/cmake/cmake-modules/CommonSetup.cmake")
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpc-setup.cmake")
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/mav-setup.cmake")
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/airlib-setup.cmake")
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/airsimwrapper-setup.cmake")

IncludeEigen()

project(AirsimWrapper VERSION 0)

# RPC includes & source files
BuildRpc()
# MavLink source files
BuildMavLink()
#AirLib source files
BuildAirlib()
#AirsimWrapper source files
BuildAirsimWrapper()


###################### Link source files to library ######################################
if (${APPLE})
    add_library(
        ${PROJECT_NAME} MODULE
        ${RPC_LIBRARY_SOURCE_FILES}
        ${MAVLINK_LIBRARY_SOURCE_FILES}
        ${AIRLIB_LIBRARY_SOURCE_FILES}
        ${AIRSIMWRAPPER_LIBRARY_SOURCE_FILES}
    )

    set_target_properties(${PROJECT_NAME} PROPERTIES BUNDLE TRUE)
else ()
    add_library(
        ${PROJECT_NAME} SHARED
        ${RPC_LIBRARY_SOURCE_FILES}
        ${MAVLINK_LIBRARY_SOURCE_FILES}
        ${AIRLIB_LIBRARY_SOURCE_FILES}
        ${AIRSIMWRAPPER_LIBRARY_SOURCE_FILES}
    )
endif ()

target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT}  -lstdc++ -lpthread -lboost_filesystem)



##################### Build Options #############################3
# Rpc
RpcCheckMSVN()
RpcCmakePkg()
RpcMSVNConfig()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-18 16:21:44

您已经告诉您的库目标要链接到boost_filesystem,但是您没有在CMake中传递到哪里可以找到Boost头文件。

使用CMake查找Boost的惯用方法是使用Boost附带的配置文件(例如BoostConfig.cmake),即Boost版本1.70及更高版本。您可以通过调用find_package(Boost ...),然后链接到导入的目标Boost::filesystem来利用这些

代码语言:javascript
复制
# Tell CMake to locate Boost on your machine, specifically
# looking for the filesystem library.
find_package(Boost REQUIRED COMPONENTS filesystem)

...
# Link the Boost::filesystem target, which includes the Boost headers.
target_link_libraries(${PROJECT_NAME} PUBLIC
    ${CMAKE_THREAD_LIBS_INIT} 
    -lstdc++ 
    -lpthread 
    Boost::filesystem
)

这也会引入Boost头,因此您不需要显式调用target_include_directories()来指定Boost标头的位置。

注意:为了确保在您的系统上安装了标头,除了安装boost-devel之外,您可能还需要安装boost

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60743227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档