Cmake не связывает при сборке sfml - PullRequest
2 голосов
/ 17 июня 2019

У меня есть проект, вложенный в другой каталог с необходимыми библиотеками для моего проекта.Я использую cmake, который идет в комплекте с Clion, 3.14.Я использую подкаталоги с cmake.У меня все хорошо, но не связывает SFML

Root- |-lib1 -smfl -lib3 -my_project

Я пытался использовать такие вещи, как использование 'target_link_directories ()', но либо я сделал это неправильно, либо это абсолютно неправильный вариант.

Root CMakeList.txt

cmake_minimum_required(VERSION 3.10)

include_directories("ChaiScript/include" Catch2/include freetype2/include SFML/include )

add_subdirectory(Catch2)
add_subdirectory(ChaiScript)
add_subdirectory(freetype2)
add_subdirectory(SFML)


add_subdirectory(Purrmaid)

. / Purrmaid / CMakeList.txt


cmake_minimum_required (VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
project (purrmaid)



add_executable( purrmaid
        main.cpp
        Base_Object.cpp
        ...
        ThreadManager.cpp)

target_link_libraries(purrmaid sfml-system sfml-window sfml-graphics sfml-network sfml-audio pthread dl)
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_MulFix'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Init_FreeType'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Get_Char_Index'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Get_Kerning'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Get_Glyph'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_New_Face'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Stroker_Set'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Glyph_To_Bitmap'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Outline_Embolden'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Load_Char'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Done_Glyph'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Stroker_New'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Open_Face'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Glyph_Stroke'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Bitmap_Embolden'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Done_Face'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_New_Memory_Face'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Stroker_Done'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Done_FreeType'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Set_Pixel_Sizes'
../SFML/lib/libsfml-graphics-d.so.2.5.1: undefined reference to `FT_Select_Charmap'

1 Ответ

2 голосов
/ 17 июня 2019

Показана ошибка: SFML не может связать, потому что не может найти ссылку на различные символы FT_ (FT_MulFix, FT_Init_FreeType и т. Д.)

Они определяются библиотекой FreeType. Я предполагаю, что вы создаете различные цели SFML, когда вы add_subdirectory(SFML)

В файле CMakeLists.txt в подкаталоге SFML вы связываете цель sfml-graphics с типом Free?

add_library(sfml-graphics
            ...)

# This is assuming you have a "freetype2" target available
# please replace by the actual name of the freetype target
target_link_libraries(sfml-graphics freetype2 ...)

РЕДАКТИРОВАТЬ : Спасибо Цывареву за указание мне в направлении фактической цели, которая не смогла соединиться.

...