Как связать Folly в CLion на Mac OS
Я установил глупость, пытаясь оба способа установки.
brew install folly
./build/bootstrap-osx-homebrew.sh
Я проверил, что он правильно установлен на месте /usr/local/Cellar/folly/2017.10.23.00
,
Сейчас я пытаюсь использовать его в проекте HelloWorld в CLion
, Вот мой CMakeLists.txt
файл.
cmake_minimum_required(VERSION 3.7)
project(HelloWorld)
message(STATUS "start running cmake....")
set(folly_DIR /usr/local/Cellar/folly/2017.10.23.00)
find_package(Boost 1.66)
find_package(folly 2017.10.23.00)
set(CMAKE_CXX_STANDARD 14)
if(Boost_FOUND)
message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
message(STATUS "Boost_LIBRARIES: ${Boost_LIBRARIES}")
message(STATUS "Boost_VERSION: ${Boost_VERSION}")
include_directories(${Boost_INCLUDE_DIRS})
endif()
if(folly_FOUND)
message(STATUS "folly_INCLUDE_DIRS: ${folly_INCLUDE_DIRS}")
message(STATUS "folly_LIBRARIES: ${folly_LIBRARIES}")
message(STATUS "folly_VERSION: ${folly_VERSION}")
include_directories(${folly_INCLUDE_DIRS})
endif()
set(SOURCE_FILES main.cpp)
add_executable(HelloWorld ${SOURCE_FILES})
if(Boost_FOUND)
target_link_libraries(HelloWorld ${Boost_LIBRARIES})
endif()
if(folly_FOUND)
target_link_libraries(HelloWorld ${folly_LIBRARIES})
endif()
Я получаю ошибку:
By not providing "Findfolly.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "folly", but
CMake did not find one.
Could not find a package configuration file provided by "folly" (requested
version 2017.10.23.00) with any of the following names:
follyConfig.cmake
folly-config.cmake
Add the installation prefix of "folly" to CMAKE_PREFIX_PATH or set
"folly_DIR" to a directory containing one of the above files. If "folly"
provides a separate development package or SDK, be sure it has been
installed.
Я устанавливаю folly_DIR
прямо наверху, но он все еще не может найти. Что я делаю неправильно?
2 ответа
Фраза
или установите "*_DIR" в каталог, содержащий один из указанных выше файлов.
в сообщении об ошибке CMake следует рассматривать как установку кешированной переменной на соответствующее значение.
Обычно переменная устанавливается с помощью параметра командной строки -D
когда выполнить cmake
, Если вы хотите установить переменную в CMakeLists.txt
, добавьте опцию CACHE в команду set:
set(folly_DIR /usr/local/Cellar/folly/2017.10.23.00 CACHE PATH "")
Убедитесь, что указанный путь содержит один из файлов конфигурации, указанных в сообщении об ошибке.
Создайте свой собственный файл FindFolly.cmake следующим образом ( ссылка здесь):
# Usage of this module as follows:
#
# find_package(Folly)
#
# Variables used by this module, they can change the default behaviour and need
# to be set before calling find_package:
#
# FOLLY_ROOT_DIR Set this variable to the root installation of
# folly if the module has problems finding
# the proper installation path.
#
# Variables defined by this module:
#
# FOLLY_FOUND System has folly libs/headers
# FOLLY_LIBRARIES The folly library/libraries
# FOLLY_INCLUDE_DIR The location of folly headers
find_path(FOLLY_ROOT_DIR
NAMES include/folly/folly-config.h
)
find_library(FOLLY_LIBRARIES
NAMES folly
HINTS ${FOLLY_ROOT_DIR}/lib
)
find_library(FOLLY_BENCHMARK_LIBRARIES
NAMES follybenchmark
HINTS ${FOLLY_ROOT_DIR}/lib
)
find_path(FOLLY_INCLUDE_DIR
NAMES folly/folly-config.h
HINTS ${FOLLY_ROOT_DIR}/include
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Folly DEFAULT_MSG
FOLLY_LIBRARIES
FOLLY_INCLUDE_DIR
)
mark_as_advanced(
FOLLY_ROOT_DIR
FOLLY_LIBRARIES
FOLLY_BENCHMARK_LIBRARIES
FOLLY_INCLUDE_DIR
)
Затем вам нужно поместить этот файл в путь к модулю CMake ( здесь больше деталей), это означает:
- Создайте папку с именем "cmake/Modules/" в корневом каталоге вашего проекта.
- Поместите файл FindFolly.cmake в созданную папку
- Добавьте следующую строку в ваш файл cmake:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")