2015-08-16 2 views
2

Я нахожусь в Mac OS X со следующим CMake-файлом и Boost v1.58.0, установленным в/usr/local/lib/boost_1_58_0, и каждый раз, когда я запускаю cmake, он печатает «Не мог найти Увеличение". Я прочитал каждый пост переполнения стека, я могу о том, как это сделать, и ничего не сработало. Есть что-то, что я просто пропустил?Cmake не может найти форматированную библиотеку

cmake_minimum_required (VERSION 3.1) 
project (HelloWorld) 

set (CMAKE_CXX_FLAGS "--std=gnu++11 ${CMAKE_C_FLAGS}") 
file (GLOB SOURCE_FILES "source/*.cpp") 

set (CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /usr/local/lib/boost_1_58_0/boost) 
set (CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /usr/local/lib/boost_1_58_0/stage/lib) 

set (Boost_NO_BOOST_CMAKE ON) 
set (BOOST_NO_SYSTEM_PATHS ON) 
set (BOOST_ROOT /usr/local/lib/boost_1_58_0) 
set (BOOST_INCLUDEDIR /usr/local/lib/boost_1_58_0/boost) 
set (BOOST_LIBRARYDIR /usr/local/lib/boost_1_58_0/stage/lib) 

set (Boost_USE_STATIC_LIBS OFF) 
set (Boost_USE_MULTITHREADED ON) 
set (Boost_USE_STATIC_RUNTIME OFF) 
find_package (Boost 1.58.0 COMPONENTS optional) 

if (Boost_FOUND) 
    include_directories (${Boost_INCLUDE_DIRS}) 
    target_link_libraries (helloworld ${Boost_LIBRARIES}) 
endif() 

include_directories ("source") 
add_executable (helloworld ${SOURCE_FILES}) 
+0

Выяснил это. Необязательно, на самом деле это не библиотека, потому что это только заголовок. – embooglement

+0

Стилистическая и переносимая точка: вы не должны определять какие-либо системные элементы, такие как BOOST_ROOT, BOOST_INCLUDEDIR и BOOST_LIBRARYDIR в вашем файле CMakeLists.txt. Если вам нужно установить их, сделайте это в командной строке с -D. Вся первая надстрочная строфа может быть опущена, так же как и команды набора путей включения и библиотеки - используйте include_directories ($ {Boost_INCLUDE_DIRS}) . –

+0

Дополнительный комментарий к переносимости: вы используете --std = gnu ++ 11, но CMake предлагает компилировать функции для включения любого поддерживаемого компилятора в соответствующий режим. Кроме того, не добавляйте флаги * C * к флагам * CXX *. Кроме того, target_link_libraries действительно должны появляться * после * add_executable, так как цель не существует на данный момент. –

ответ

2

Это было нарушение, потому что опция не является библиотекой, это заголовок только, поэтому изменение его find_package (Boost 1.58.0) исправили проблему.

+0

Пожалуйста, отметьте ответ как принятый, если он решил проблему. – emlai

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