Сборка проекта в Visual Studio

День добрый! Мне нужно собрать и запустить проект в Visual Studio. Изначально проект создавался в Clion. Использую библиотеку SFML.

При попытке собрать проект VS выдает вот такую ошибку: LNK1104 cannot open file 'sfml-graphics.lib'.

Можно ли тут как-то обойтись без создания файлов *.vscproj и *.sln?

Я сам могу писать в CLion'е, но мне удобнее было бы писать в VS. Важно сохранить совместимость с CLion, потому что другой человек может только в CLion'е работать.

Это CMake проект

Мне надо запустить этот проект под VS. Если это возможно, то прошу объяснить как это сделать.

Вот CMakeLists.txt:

cmake_minimum_required(VERSION 3.13)
project(SimplePlatformer)

set(CMAKE_CXX_STANDARD 14)

# Uncomment to make a 'Make' verbose
#set(CMAKE_VERBOSE_MAKEFILE ON)

# Setup for UNIX-like system
if (UNIX)
    message("--|| Using Unix-like OS ||--")

    # Set 3rd party libraries paths
    set(SFML_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/UNIX-SFML-2.5.1/include")
    set(SFML_LIBRARY_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/UNIX-SFML-2.5.1/lib")
    set(SFML_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/UNIX-SFML-2.5.1/lib/cmake/SFML")

    # Link all *.so files
    link_directories(SFML_LIBRARY_DIR)

    # Setup for Windows system
elseif(WIN32)
    message("--|| Using Windows OS ||--")

    # Set 3rd party libraries paths
    if(MINGW AND NOT CMAKE_CL_64)
        message(--|| Using MinGW x86 ||--)

        set(SFML_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1-x86/lib/cmake/SFML")
        set(SFML_BINARY_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1-x86/bin")
        set(SFML_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1-x86/include")
        set(SFML_LIBRARY_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1-x86/lib")

    elseif(MINGW AND CMAKE_CL_64)
        message(--|| Using MinGW x64 ||--)

        set(SFML_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1/lib/cmake/SFML")
        set(SFML_BINARY_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1/bin")
        set(SFML_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1/include")
        set(SFML_LIBRARY_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1/lib")

    endif()

    # Copy all *.dll files to compiled project binaries
    file(GLOB SFML_DLLS "${SFML_BINARY_DIR}/*.dll")
    file(COPY ${SFML_DLLS} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

    # GARBAGE -> Remove
    #link_directories(SFML_BINARY_DIR SFML_LIBRARY_DIR)

endif()

include_directories(SFML_INCLUDE_DIR include)
find_package(SFML 2.5.1 COMPONENTS system window graphics network audio)

if(SFML_FOUND)
    message(STATUS "SFML_INCLUDE_DIR: ${SFML_INCLUDE_DIR}")
    message(STATUS "SFML_LIBRARIES: ${SFML_LIBRARIES}")
    message(STATUS "SFML_VERSION: ${SFML_VERSION}")
endif()

add_executable(SimplePlatformer SimplePlatformer.cpp src/Game.cpp include/Game.h)
target_link_libraries (SimplePlatformer sfml-graphics sfml-window sfml-system)

Ответы (2 шт):

Автор решения: user397595

В CLion с недавнего времени есть поддержка MSVC помимо MinGW, Cygwin и WSL из коробки. Достаточно настроить Visual Studio toolchain и нажимать зелёную кнопку для запуска как и с MinGW.

Пример настройки: https://www.jetbrains.com/help/clion/quick-tutorial-on-configuring-clion-on-windows.html#MSVC

введите сюда описание изображения

→ Ссылка
Автор решения: Arenoros

Этого должно быть достаточно


make_minimum_required(VERSION 3.13)
project(SimplePlatformer)

set(CMAKE_CXX_STANDARD 14)

# Uncomment to make a 'Make' verbose
#set(CMAKE_VERBOSE_MAKEFILE ON)

if (UNIX) # Setup for UNIX-like system
    message("--|| Using Unix-like OS ||--")
    set(SFML_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/UNIX-SFML-2.5.1/lib/cmake/SFML")
    
elseif(WIN32) # Setup for Windows system
    message("--|| Using Windows OS ||--")
    # Set 3rd party libraries paths
    if(MINGW AND NOT CMAKE_CL_64)
        message(--|| Using MinGW x86 ||--)
        set(SFML_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1-x86/lib/cmake/SFML")
    elseif(MINGW AND CMAKE_CL_64)
        message(--|| Using MinGW x64 ||--)
        set(SFML_DIR "${CMAKE_CURRENT_LIST_DIR}/vendor/WIN-SFML-2.5.1/lib/cmake/SFML")
    endif()
endif()

find_package(SFML 2.5.1 
    PATHS ${SFML_DIR} 
    COMPONENTS system window graphics network audio
)

if(SFML_FOUND)
    message(STATUS "SFML_INCLUDE_DIR: ${SFML_INCLUDE_DIR}")
    message(STATUS "SFML_LIBRARIES: ${SFML_LIBRARIES}")
    message(STATUS "SFML_VERSION: ${SFML_VERSION}")
endif()

add_executable(SimplePlatformer SimplePlatformer.cpp src/Game.cpp include/Game.h)
target_link_libraries (SimplePlatformer ${SFML_LIBRARIES})
target_include_directories(SimplePlatformer ${SFML_INCLUDE_DIR})

install(TARGETS SimplePlatformer ${SFML_LIBRARIES}
    RUNTIME DESTINATION bin
    LIBRARY DESTINATION lib
)

→ Ссылка