Я вообще совсем не знаком с CMake и C++ в целом, поэтому сегодня я попытался импортировать внешнюю библиотеку, такую как SFML, в мой проект в IDE CLion Jetbrain, но без везения.Невозможно включить заголовочные файлы SFML в проект CLION
Проведя целый день, познакомившись с CMake в целом и сделав работу SFML с CMake в частности, я, наконец, смог запустить CMake моего проекта, чтобы найти файлы библиотеки SFML.
Однако, когда я подошел к собственному заголовочному файлу, чтобы включить заголовок SFML, я столкнулся с проблемой, поскольку он не нашел заголовков из библиотеки. И под этим я имею в виду директивы #include.
Поскольку я новичок, я здесь совсем потерялся.
Вот мой CMakeLists.txt файл:
# Set CMake's minimum required version
cmake_minimum_required(VERSION 3.5)
set(CMAKE_VERBOSE_MAKEFILE on)
#Set CMake's project name
project(testproj)
include_directories("${PROJECT_BINARY_DIR}")
#Set CMake's flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#Set source files
set(SOURCE_FILES Animal.cpp Animal.hpp ConstantValues.hpp Enums.hpp Mamal.hpp Mammals/Lion.cpp Mammals/Lion.hpp)
add_library(testproj SHARED ${SOURCE_FILES})
#Set CMake's module path to find the SFML Lib
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Modules/" ${CMAKE_MODULE_PATH})
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:\\SFML\\SFML-2.3.2")
#Find the SFML lib
find_package(SFML 2 REQUIRED audio)
if (SFML_FOUND)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(testproj ${SFML_LIBRARIES})
endif (SFML_FOUND)
Стоит отметить, что я работаю на Windows, и я смотрю только для аудио модуля в SFML.
Что мне не хватает?
'Я столкнулся с проблемой, поскольку он не нашел заголовков из библиотеки.' - Что это значит? 'find_package' терпит неудачу? Либо директива '# include' терпит неудачу? В последнем случае, какое точное сообщение об ошибке? – Tsyvarev
@ Цыварев Я редактировал сообщение - я имел в виду директивы #include. В нем нет специального сообщения об ошибке, просто нет такого файла или каталога. –
** Точная ошибка сообщение **, пожалуйста. Поскольку 'find_package (SFML)' не возвращает ошибку, он работает правильно. Таким образом, либо установка SFML нарушена, либо вы используете неправильную директиву '# include'. – Tsyvarev