
소스에서 컴파일된 최신 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-dev
16.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
. 그러나 그것은 단순히 작동합니다.
누군가가 더 나은 해결책을 찾을 수 있기를 바랍니다.