2013-12-10 3 views
3

Мне нужна Boost и некоторые библиотеки компонентов, включая program_options, но команда CMake FIND_PACKAGE не работает в Debian из-за именования библиотеки. Как я могу заставить его найти библиотеку program_options самым чистым способом?CMake не может найти boost_program_options на Debian

# CMakeLists.txt 
SET(Boost_USE_STATIC_LIBS FALSE) 
SET(Boost_USE_MULTITHREADED FALSE) 
FIND_PACKAGE(Boost COMPONENTS program_options system thread REQUIRED) 

Это приводит к следующему:

Unable to find the requested Boost libraries. 

Boost version: 1.54.0 

Boost include path: /usr/include 

The following Boost libraries could not be found: 

     boost_program_options 

Рассматривая мои Повышения библиотеки:

$ ls -F /usr/lib | grep boost 
libboost_program_options.so.1.49.0 
libboost_program_options.so.1.54.0 
libboost_system.a 
[email protected] 
libboost_system.so.1.54.0 
libboost_thread.a 
[email protected] 
libboost_thread.so.1.49.0 
libboost_thread.so.1.54.0 

Обратите внимание, что program_options является единственным без неверсированные имя (другие библиотеки предоставляют (обозначается @ выше), например libboost_system.so -> libboost_system.so.1.54.0). Насколько я могу судить, Debian 7.2 не предоставляет пакет, который создает такую ​​ссылку, и поэтому не может быть найден program_options. Что я могу сделать, это не включает в себя вручную создание ссылки (я не могу ожидать, что другие, использующие мой пакет, смогут это сделать).

$ cmake -DBoost_DEBUG=ON 
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:961 ] Searching for PROGRAM_OPTIONS_LIBRARY_RELEASE: boost_program_options-gcc47-1_54;boost_program_options-gcc47;boost_program_options-1_54;boost_program_options;boost_program_options 
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:993 ] Searching for PROGRAM_OPTIONS_LIBRARY_DEBUG: boost_program_options-gcc47-d-1_54;boost_program_options-gcc47-d;boost_program_options-d-1_54;boost_program_options-d;boost_program_options;boost_program_options 
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:961 ] Searching for SYSTEM_LIBRARY_RELEASE: boost_system-gcc47-1_54;boost_system-gcc47;boost_system-1_54;boost_system;boost_system 
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:993 ] Searching for SYSTEM_LIBRARY_DEBUG: boost_system-gcc47-d-1_54;boost_system-gcc47-d;boost_system-d-1_54;boost_system-d;boost_system;boost_system 
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:961 ] Searching for THREAD_LIBRARY_RELEASE: boost_thread-gcc47-1_54;boost_thread-gcc47;boost_thread-1_54;boost_thread;boost_thread 
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:993 ] Searching for THREAD_LIBRARY_DEBUG: boost_thread-gcc47-d-1_54;boost_thread-gcc47-d;boost_thread-d-1_54;boost_thread-d;boost_thread;boost_thread 
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:1107 ] Boost_FOUND = FALSE 

ответ

12

Nevermind, оказывается установка libboost-program-options-dev делает ссылку.

Смежные вопросы