SFML 在 Windows 上不适用于 CLion

SFML doesn't work with CLion on Windows

我想 运行 CLion 中的以下简单 C++ SFML 应用程序,但是当我尝试这样做时,我总是收到错误消息 Test2.exe has stopped working。

main.cpp

#include <SFML/Graphics.hpp>
int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

while (window.isOpen())
{
    sf::Event event;
    while (window.pollEvent(event))
    {
        if (event.type == sf::Event::Closed)
            window.close();
    }

    window.clear();
    window.draw(shape);
    window.display();
}

return 0;
}

这可能是 CMake 的问题,但我没有从 CLion 收到任何错误消息,所以我认为 SFML 已正确找到。

CMakeLists.txt

cmake_minimum_required(VERSION 3.9)
project(Test2)

set(CMAKE_CXX_STANDARD 17)

add_executable(Test2 main.cpp)

set(SFML_ROOT "C:/Program Files/SFML-2.4.2")

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

if(SFML_FOUND)
    include_directories(${SFML_INCLUDE_DIR})
    target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})
endif()

我的 SFML 位于 C:/Program Files/SFML-2.4.2,我使用的是 MinGW 的最新版本 (2.4.2)。我有以下 MinGW 版本: MingGW configuration。我的操作系统是 Windows 8.1 Enterprise。 CLion 和 SFML(Code::Blocks)分别可以完美地工作。

有什么我忘记添加到 CMakeLists.txt 的吗?或者我应该修改 CLion 中的一些设置以使 SFML 工作吗?

按以下方式修改 CMakeLists.txt 后,创建的 .exe 可以正常运行。

cmake_minimum_required(VERSION 3.9)
project(Test2)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc")
set(SFML_STATIC_LIBRARIES TRUE)

add_executable(Test2 main.cpp)

set(SFML_ROOT "C:/Program Files/SFML-2.4.2")

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

if(SFML_FOUND)
    include_directories(${SFML_INCLUDE_DIR})
    target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})
endif()