[英]Linking SFML static libs to project
早上好! 我正在从共享SFML库转移到静态库。 但是我有很多错误: g++
找不到一些库。 我使用了本教程: https : //github.com/SFML/SFML/wiki/Tutorial%3A-Build-your-SFML-project-with-CMake 。 我的CMakeLists.txt
:
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 :(。text + 0x1166):对'udev_device_get_syspath'libs / libsfml-window-sa(JoystickImpl.cpp.o)的未定义引用:在函数'sf :: priv :: JoystickImpl :: open(unsigned int)'中:JoystickImpl.cpp :(。text + 0x19ed):对'udev_device_new_from_syspath'的未定义引用
我该如何解决? 我需要采用跨平台方式。 谢谢!
编辑:
当然,我有一个名为libs
的目录,其中包含所有需要的库。
首先,将所有依赖项与项目本身打包在一起通常不是一个好主意,但是对于类似游戏的应用程序可能会有例外。
就您而言,问题不在打包的SFML中,而在libudev
库中。 这个图书馆是
特定于Linux(不是跨平台)
无法静态链接(嗯,可能可以,但是我敢打赌,这是一个非常糟糕的主意,因为您链接的库可能是主机上运行的udev守护程序的版本不同)
因此,无论如何,您都需要将udev
添加到target_link_libraries()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.