Dodawanie biblioteki za pomocą cmake

0

Sprawa jest prosta ale nie mogę sobie z tym poradzić. Piszę swoja grę używając SFML. Dodanie tej biblioteki jakoś się mi udało za pomocą
takiego cmakelist:

cmake_minimum_required(VERSION 3.15)
project(Test_tiled)

set(CMAKE_CXX_STANDARD 17)

set(SFML_INCLUDE_DIR "X:\\CLion 2019.3.5\\SFML-2.5.1\\include")
set(SFML_LIBRARY_DIR "X:\\CLion 2019.3.5\\SFML-2.5.1\\lib")
set(SFML_DIR "X:\\CLion 2019.3.5\\SFML-2.5.1\\lib\\cmake\\SFML")


link_directories(SFML_LIBRARY_DIR )
include_directories(SFML_INCLUDE_DIR )

find_package(SFML 2.5.1 COMPONENTS system window graphics network audio)
find_package(TMXLITE)

if(SFML_FOUND)
    message(STATUS "SFML_INCLUDE_DIR: ${SFML_INCLUDE_DIR}")
    message(STATUS "SFML_LIBRARIES: ${SFML_LIBRARIES}")
    message(STATUS "SFML_VERSION: ${SFML_VERSION}")
endif()

add_executable(Test_tiled main.cpp)

target_link_libraries (Test_tiled sfml-audio sfml-graphics sfml-window sfml-system)

Jednak teraz natrafiłem na ścianę - dodatkowa biblioteka mi potrzebna: https://github.com/fallahn/tmxlite
Nie mam pojecia jak się do tego zabrać, aby dołączyć ta bibliotekę a autor na stronie mówi o budowaniu jej w Visual Studio, albo za pomoca cmake, albo po prostu dodajac ją do projektu - żadne podejście nie skończyło się sukcesem. Wygenerowałem jeden plik .lib w vs, potem probowałem z cmake w clion i miałem .dll i dll.a ale nie rozumiem jak mam to dodać. Na końcu znajmy próbował pomóc i coś kombinowaliśmy z dodaniem całej biblioteki do projektu:
screenshot-20200429140808.png
ale próby dodawania/ modyfikowania cmakelists nic nie dawały i tu proszę o pomoc jak dodać tę biblioteke.

0

To akurat nie jest dobra instrukcja dla najnowszego SFML-a.

To jest mój szablon dla studentów:

cmake_minimum_required(VERSION 3.1)
# Proszę zmienić wymaganą wersję CMake na niższą - w zupełności wystarczy 3.1

project(test-sfml)

set(CMAKE_CXX_STANDARD 14)

# powinny być zmienione dla kompilatorów innych niż gcc/clang 
add_compile_options(-Wall -Wextra)

# ustawienia SFML-a dla Linuksa/MacOS i Windows - proszę zostawić obie konfiguracje,
# CMake automatycznie użyje właściwej
if (UNIX)
    # proszę nie modyfkować pierwszego wpisu, można dopisać kolejne katalogi
    # pierwszy wpis powinien poprawnie skonfigurować SFML-a dla starszych
    # Debianopodobnych dystrybucji (w nowszych znajdzie się sam)
    set ( CMAKE_MODULES_PATH "/usr/share/SFML/cmake/Modules" ${CMAKE_MODULE_PATH})

    # czy ktoś używa MacOS ? Co tam trzeba wpisać ?

endif(UNIX)

if (WIN32)
    # próbujemy linkować statycznie (nie trzeba kopiować plików dll do katalogu projektu)
    set( SFML_STATIC_LIBRARIES TRUE )

    # można zmienić katalog na właściwy
    set ( SFML_DIR "C:/SFML-2.5/SFML-2.5.1/lib/cmake/SFML/")
endif(WIN32)


find_package(SFML 2 COMPONENTS graphics audio REQUIRED)

add_executable(MyApp main.cpp)

target_link_libraries(MyApp sfml-graphics sfml-audio)

Trzeba pamiętać, że przy linkowaniu dynamicznym system musi umieć znaleźć dll-ki SFML-a (i ewentualnie openAL) - czyli albo trzeba je przegrać do katalogu z binarką, albo wrzucić w jakieś standardowe systemowe miejsce (nie wiem, nie znam się na Windows).

Co do tmxlite - na szybko spróbowałem takiego podejścia i wydaje się działać

  1. kopiuję cały katalog tmxlite do mojego projektu
  2. do mojego CMakeLists.txt dodaję wpis
add_subdirectory(tmxlite)
  1. do mojego target_link_libraries dopisuję tmxlite

1 użytkowników online, w tym zalogowanych: 0, gości: 1