【问题标题】:compiling SFML with cmake and mingw under windowswindows下用cmake和mingw编译SFML
【发布时间】:2018-03-05 02:23:57
【问题描述】:

当我尝试运行 cmake 来构建一个包含 SFML 库的项目时,我收到以下错误:SFML found but version too low (requested: 2.4, found: 1.x.x)

我只下载了最新版本的库 (SFML-2.4.2) 的源代码。我比运行 cmake(使用 MinGW Makefiles)并将二进制文件构建到同一个文件夹中。 我将 FindSFML 复制到我的项目的子文件夹中。 之后我有以下文件夹结构

SFML-2.4.2\
  cmake\
    Modules\
       FindSFML.cmake
  CMakeFiles
  doc
  ...
  include
  lib
  src
  ..

sfml-games\
  tetris\
    cmake_modules\
      FindSFML.cmake
    CMakeLists.txt
    main.cpp
  tetris-build
    ...

我的 CMakeLists.txt 包含以下内容:

project(Tetris)
cmake_minimum_required(VERSION 2.8) 
aux_source_directory(. SRC_LIST)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules")
Find_package(SFML 2 REQUIRED system window graphics network audio)

include_directories(${SFML_INCLUDE_DIR})

add_executable(${PROJECT_NAME} ${SRC_LIST}) 

target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARY})

我发现在 cmake 中,条目 CMAKE_INSTALL_PREFIX(我没有得到)设置为 C:\Program Files (x86)\SFML,所以我将库和 SFML 的库放入 C:\Program Files (x86)\SFML。 (CMAKE_INSTALL_PREFIX 是什么,我真的应该将库和 lib 文件夹复制到我的C:\Program Files (x86)\ 吗??)。现在我的 cmake 运行了,但是当我尝试编译代码时,我得到了很多对 '_imp__....' 的未定义引用。

顺便说一下,在 linux 上,我刚刚通过 sudo apt-get install libsfml-dev 安装了 SFML,它开箱即用。

【问题讨论】:

    标签: windows cmake mingw sfml


    【解决方案1】:

    你把事情弄糊涂了。 CMAKE_INSTALL_PREFIX 是构建install 目标(即运行make install)时放置SFML 的默认位置。这与您的其他问题无关。

    您不必在C:\Program Files 下的某处安装SFML(或任何其他库)。这完全取决于您。

    我发现相当简洁的是将 MinGW 安装到 C:\usr(或创建一个符号链接到您的安装文件夹),并在构建 SFML 时使用该路径作为 CMAKE_INSTALL_PREFIX

    这种方式 MinGW 的行为应该与您在 Linux 中习惯的方式非常相似(即不必为包含目录或库等指定路径)。

    至于您未定义的参考错误,您应该创建一个新问题,只询问这些(然后至少包括其中一些),因为它们与安装目录无关。

    现在我只能猜测,但这很可能是由于您为链接器使用了错误的 CMake 变量。在 Linux 上您不会注意到这一点,因为 SFML 将位于默认搜索路径中(如果您如上所述使用 C:\usr,也会发生这种情况)。

    要尝试解决此问题,请使用以下行:

    target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})
    

    【讨论】:

      猜你喜欢
      • 2018-01-22
      • 2021-11-14
      • 2014-06-17
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      相关资源
      最近更新 更多