おはようございます!共有SFMLライブラリから静的ライブラリに移行しています。しかし、私は多くのエラーがあります:g++
いくつかのライブラリを見つけることができませんでした。私はこのチュートリアルを使った:https://github.com/SFML/SFML/wiki/Tutorial%3A-Build-your-SFML-project-with-CMake。マイCMakeLists.txt
:プロジェクトにSFML静的ライブラリをリンクする
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
)
私のエラーのごく一部:
JoystickImpl.cpp :(テキスト+ 0x1166): 'udev_device_get_syspath' のlibs/libsfml-ウィンドウ-SAへの未定義の参照(JoystickImpl。 cpp.o):関数 'SF :: PRIV :: JoystickImpl ::オープン(unsigned int型)' は、:。 JoystickImpl.cpp :(テキスト+ 0x19ed): 'udev_device_new_from_syspath' を実行する方法
への未定義参照私はそれを修正する?私はそれをクロスプラットフォームの方法で行う必要があります。ありがとう!
編集:もちろん
、私はすべての必要なライブラリとlibs
というディレクトリがあります。
'未定義の 'udev_device_get_syspath'への参照は、その関数が定義されているライブラリをリンクしていないことを意味します。これは 'libudev'です。 –
@MikeKinghan、ありがとう!しかし、あなたが知っている、多くの欠けているライブラリがあります。それらをすべてリンクするためのcmakeスクリプトが必要です...そして、**それはクロスプラットフォームでなければなりません。すべてのエラーを表示したい場合は、それらをすべて貼り付けました:http://pastebin.com/erfnieXC。 –
'それはクロスプラットフォームでなければなりません。 - あなたのプロジェクトに**ライブラリが同梱されている場合、どういう意味でしょうか? **すべての可能性のあるプラットフォーム**のライブラリをすべてあなたのプロジェクトに同梱したいですか?または何?実際問題とは何ですか? – Tsyvarev