Guten Morgen! Ich gehe von freigegebenen SFML-Bibliotheken zu statischen. Aber ich habe viele Fehler: g++
konnte einige Bibliotheken nicht finden. Ich habe dieses Tutorial verwendet: https://github.com/SFML/SFML/wiki/Tutorial%3A-Build-your-SFML-project-with-CMake. Mein CMakeLists.txt
:Verknüpfen von statischen SFML-Bibliotheken mit Projekt
cmake_minimum_required(VERSION 2.8)
project(LastFail)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/libs/)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/libs/)
set(CMAKE_C_COMPILER_INIT g++)
add_definitions(-std=c++1y -w)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
find_package(SFML 2 REQUIRED system window graphics network audio)
include_directories(
include/
libs/include/
)
file(GLOB SRC
"src/*/*.cpp"
"src/*.cpp"
)
add_executable(LastFail ${SRC})
target_link_libraries(LastFail
${CMAKE_SOURCE_DIR}/libs/libjsoncpp.a
${CMAKE_SOURCE_DIR}/libs/libsfml-audio-s.a
${CMAKE_SOURCE_DIR}/libs/libsfml-graphics-s.a
${CMAKE_SOURCE_DIR}/libs/libsfml-network-s.a
${CMAKE_SOURCE_DIR}/libs/libsfml-system-s.a
${CMAKE_SOURCE_DIR}/libs/libsfml-window-s.a
)
set_target_properties(LastFail PROPERTIES
OUTPUT_NAME "LastFail"
CLEAN_DIRECT_OUTPUT 1
)
kleiner Teil meiner Fehler:
JoystickImpl.cpp :(text + 0x1166):. Undefined Verweis auf 'udev_device_get_syspath' libs/libsfml-Fenster-sa (JoystickImpl. cpp.o): In der Funktion 'sf :: priv :: JoystickImpl :: open (unsigned int)':. JoystickImpl.cpp :(text + 0x19ed): undefined Verweis auf 'udev_device_new_from_syspath'
Wie Ich repariere das? Ich muss diesen plattformübergreifenden Weg gehen. Vielen Dank!
Edit:
Natürlich habe ich ein Verzeichnis libs
mit allen benötigten Bibliotheken genannt.
'undefinierter Verweis auf 'udev_device_get_syspath' bedeutet, dass Sie nicht die Bibliothek verknüpfen, in der diese Funktion definiert ist. Es ist 'libudev'. –
@ MikeKinghan, danke! Aber weißt du, es gibt viele verpasste Bibliotheken. Ich brauche ein kleines cmake-Skript, um alle zu verlinken ... Und es muss ** plattformübergreifend sein. Wenn du alle Fehler sehen willst, habe ich sie alle eingefügt: http://pastebin.com/erfnieXC. –
'Und es muss plattformübergreifend sein. - Was bedeutet das, wenn Sie ** Bibliotheken mit Ihrem Projekt geliefert haben **? Möchten Sie alle Bibliotheken für ** alle möglichen Plattformen ** mit Ihrem Projekt bereitstellen? Oder was? Was ist eigentlich eine Frage/ein Problem? – Tsyvarev