cmake 3.0.2는 14.04에서 부스트를 찾을 수 없습니다.

cmake 3.0.2는 14.04에서 부스트를 찾을 수 없습니다.

소스에서 컴파일된 최신 cmake 3.0.2가 있고 libboost-all-dev도 설치되어 있습니다. 그리고 find_package(Boost)는 그것을 찾을 수 없습니다. cmake의 출력은 다음과 같습니다.

Unable to find the requested Boost libraries.

Unable to find the Boost header files. Please set BOOST_ROOT to the root 
directory containing Boost of BOOST_INCLUDEDIR to the directory containing
Boost's headers.

cmake에 표시되도록 하려면 Boost를 설치한 후 변수를 수동으로 설정해야 합니까?

감사해요.

답변1

어떤 버전을 libboost-all-dev사용하고 있나요? v1.53.0을 사용하고 있다고 가정합니다.

대신 설치해 보세요 libboost1.54-all-dev.

답변2

14.04(그리고 아마도 그 이전)부터 16.04까지 다음을 사용할 수 있었습니다.

find_package( Boost COMPONENTS filesystem system REQUIRED )

include_directories(
    ${BOOST_INCLUDE_DIRS}
)

target_link_libraries(${PROJECT_NAME}
    ${Boost_FILESYSTEM_LIBRARY}
    ${Boost_SYSTEM_LIBRARY}
}

헤더만 필요한 경우 구성요소를 지정할 필요가 없으며 다음을 지정하지 않아도 됩니다 target_link_libraries().

find_package( Boost REQUIRED )

include_directories(
    ${BOOST_INCLUDE_DIRS}
)

libboost-all-dev16.10에서는 내 코드가 Ubuntu에서 계속 컴파일되도록 설치해야 했습니다 .

sudo apt-get install libboost-all-dev

이전 버전에서는 libboost-dev어떻게든 에서만 작동했습니다. 그 부분은 이미 파악하신 것 같지만, 최근 그 부분에 변화가 있다는 점을 확실히 말씀드리고 싶었습니다.

답변3

고마워요, 로히쓰.

대체 솔루션으로 최신 버전의 Boost를 다운로드하여 빌드하고 다음과 같이 ~/.profile에 BOOST_ROOT 변수를 추가했습니다.

export BOOST_ROOT=$HOME/work/boost_1_57_0

헤더가 아닌 라이브러리를 사용하는 경우 부스트를 빌드해야 합니다.

답변4

저도 우분투에서 이런 어색한 상황을 만나곤 하는데...

내 솔루션은 단순히 사용하지 않고 find_package링크 프로세스에 라이브러리를 추가하는 것 입니다.

target_link_libraries( your_program boost_system boost_filesystem ... )

나쁜 점은 도서관 cmake의 존재를 조사할 수 없다는 것이다 boost. 그러나 그것은 단순히 작동합니다.

누군가가 더 나은 해결책을 찾을 수 있기를 바랍니다.

관련 정보