繁体   English   中英

将SFML静态库链接到项目

[英]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库中。 这个图书馆是

  1. 特定于Linux(不是跨平台)

  2. 无法静态链接(嗯,可能可以,但是我敢打赌,这是一个非常糟糕的主意,因为您链接的库可能是主机上运行的udev守护程序的版本不同)

因此,无论如何,您都需要将udev添加到target_link_libraries()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM