2013-09-03 2 views
4

Я использую cmake и boost сделать Visual Studio решение. моя команда:ошибка CMake: Следующие библиотеки Повышения не удалось найти

F:\C++\yapimpl\build>cmake .. -G"Visual Studio 11" -DBOOST_ROOT=E:\lib\lib\boost 
_1_54_0 -DBOOST_LIBRARYDIR=E:\lib\lib\boost_1_54_0\bin\vc11\lib 

хотя я установил BOOST_LIBRARYDIR и BOOST_ROOT, он по-прежнему говорит boost_unit_test_framework не может быть найден.

каталог E:\lib\lib\boost_1_54_0\bin\vc11\lib действительно содержит эти файлы:

08/08/2013 CSer 03:48  12,738,344 libboost_unit_test_framework-vc110-mt-1 
_54.lib 
08/08/2013 CSer 03:44  31,489,264 libboost_unit_test_framework-vc110-mt-g 
d-1_54.lib 
08/08/2013 CSer 04:10  14,109,766 libboost_unit_test_framework-vc110-mt-s 
-1_54.lib 
08/08/2013 CSer 03:59  32,856,094 libboost_unit_test_framework-vc110-mt-s 
gd-1_54.lib 

но, кажется, те, которые не распознаются. в чем проблема? Traceback здесь: http://codepad.org/zgL9tpjo

проект здесь: https://github.com/Answeror/yapimpl и https://github.com/Answeror/ACMake надежда кто-то может попробовать Cmake проекту yapimpl

+0

Можете ли вы запустить 'cmake. -DBoost_DEBUG = ON -DBoost_DETAILED_FAILURE_MSG = ON' и вставить здесь сюда? – Fraser

+0

Вы запустили команду CMake выше? Я предпочел бы видеть на выходе CMake с усилением диагностика включена, чем пытаться настроить yapimpl :-) – Fraser

+0

@Fraser вывода [здесь] (http://codepad.org/F14e72UU) – zhangxaochen

ответ

12

Как ваши имена библиотек начинаются с lib, кажется, что вы построили статические версии библиотек Boost. boost naming conventions состояние:

lib

      Prefix: except on Microsoft Windows, every Boost library name begins with this string. On Windows, only ordinary static libraries use the lib prefix; import libraries and DLLs do not.

В выходе порожденного CMake, есть линия, которая гласит:

-- [ F:/C++/yapimpl/acmake/FindBoost.cmake:570 ] Boost_USE_STATIC_LIBS = OFF 

Кроме того, вы можете увидеть, что имена библиотек CMake ищет не начать с lib:

... Searching for UNIT_TEST_FRAMEWORK_LIBRARY_RELEASE: boost_unit_test_framework-vc110-mt-1_54;... 

рассказывать CMake для поиска статической версии Boost, вам просто нужно установить Boost_USE_STATIC_LIBS в ON. Вы можете сделать это в вашем CMakeLists.txt перед тем вызова find_package(Boost ...):

set(Boost_USE_STATIC_LIBS ON) 

или вы можете просто установить его в командной строке:

cmake . -DBoost_USE_STATIC_LIBS=ON 

Для получения дополнительной информации о модуле FindBoost CMake см the docs, или пробег

cmake --help-module FindBoost 
+0

ТНХ для ответа, в [TRACEBACK] (http://codepad.org/F14e72UU) я писал выше, у меня есть '-DBoost_USE_STATIC_LIBS = ON', но Выходные данные показывают, что становится 'OFF' позже, могли бы вы проверить проекты (https://github.com/Answeror/yapimpl и https://github.com/Answeror/ACMake), чтобы увидеть, что происходит? – zhangxaochen

+0

В этой горе кода CMake есть пара мест, где по умолчанию значение 'Boost_USE_STATIC_LIBS' установлено на' OFF'. Для первого можно попробовать запустить 'cmake. -DBOOST_SUPPORT_STATIC = ON' пожалуйста? Кроме того, если вы добавите 'variable_watch (Boost_USE_STATIC_LIBS)' в начало своего собственного CMakeLists.txt, он должен печатать сообщение каждый раз, когда изменяется переменная. – Fraser

0

I только набор BOOST_ROOT при использовании CMake и подталкивание. Все остальное работает без каких-либо проблем

"C:\Program Files (x86)\CMake 2.8\bin\cmake" 
-G"Visual Studio 11 Win64" 
-HC:\USB\dev\MyProject -BC:\build\MyProject 
-DBOOST_ROOT="C:\USB\thirdparty\vs2012\boost_1_54_0-x64" 
+0

ли вы имеете в виду 'BOOST_ROOT'? Это то, что вы устанавливаете в приведенной выше команде. – Fraser

+0

вы правы - я изменю это в мой ответ – Vertexwahn

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