Компоновщику не удается найти файл .lib

#c #cmake #build #box2d

#c #cmake #строить #box2d

Вопрос:

Я пытаюсь заставить работать внешнюю библиотеку (box2d для чего это важно) и добавил путь включения в «C_Cpp.default.includePath», и CMake находит его правильно, поскольку в нем нет ошибок. Проблема в том, что при построении он говорит:

LINK : fatal error LNK1104: cannot open file 'box2d.lib' [pathtoprojbuildProjName.vcxproj]

Я просмотрел файл, в котором говорится следующее:

 <AdditionalDependencies>D:Program FilesSFML-2.5.1libsfml-graphics-d.lib;D:Program FilesSFML-2.5.1libsfml-audio-d.lib;D:Program FilesSFML-2.5.1libsfml-network-d.lib;box2d.lib;D:Program FilesSFML-2.5.1libsfml-window-d.lib;D:Program FilesSFML-2.5.1libsfml-system-d.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib</AdditionalDependencies>
 

Из того, что я вижу, следует, что, хотя sfml был каким-то образом правильно установлен, ожидается, что box2d будет находиться в PATH? Я попытался добавить путь к библиотеке в launch.json через:

 "environment": [{"name": "PATH","value":"path/to/Box2D/lib;%PATH%;"}],
 

но это, похоже, тоже не помогло.

В моем CMakeLists.txt Я добавил find_package(Box2D REQUIRED)

Если есть какая-либо другая информация, которая отсутствует, пожалуйста, сообщите мне.

Весь CMakeLists.txt:

 project(VSGame)

set(CMAKE_CXX_STANDARD 14)

find_package(SFML 2.5.1 COMPONENTS network audio graphics window system REQUIRED)
find_package(Box2D REQUIRED)

add_executable(VSGame
    main.cpp 
    ResourceManager.hpp
    Game.cpp
)

target_link_libraries(VSGame sfml-window sfml-graphics sfml-audio sfml-network box2d)
 

путь к box2d: D:packagesBox2D , файл box2d.lib D:packagesBox2Dlib находится под , а папка / файлы cmake находятся под D:packagesBox2Dlibcmakebox2d

Комментарии:

1. Пожалуйста, отправьте сообщение complete CMakeLists.txt .

2. Где на самом деле установлен box2d? Где именно находится (импортируемая) библиотека? Предоставляет ли он файлы конфигурации cmake? Если нет, то, возможно, было бы неплохо добавить импортированный целевой объект.

3. Обновил сообщение обоими вещами, которые вы просили.