Связывание библиотек с CMake (MSVC) в Qt Creator - PullRequest
0 голосов
/ 18 февраля 2019

Я делаю проект с использованием библиотеки SDL2.Он работает в Ubuntu, но после долгого времени я не могу скомпилировать его для Windows.Я использую Qt Creator в качестве IDE и перепробовал множество решений, найденных в Интернете.В настоящее время моя среда IDE обнаруживает файлы, но я не могу их создать, потому что каждая функция, которую я использовал в своем приложении (даже те, которые я написал сам и основной), выдает ошибку LNK2019: unresolved external symbol ..., и когда я хочу увидеть, где проблема,поэтому я нажимаю на ошибку, она просто пишет File not found: FILE.cpp.obj.

Мой текущий CMakeLists.txt выглядит следующим образом:

cmake_minimum_required(VERSION 3.7)

project(Joystick)
set(SDL2_LIBRARIES D:/Projects/Libs/SDL2-2.0.9/lib/x64/)
set(SDL2_INCLUDE_DIR D:/Projects/Libs/SDL2-2.0.9/include)

add_executable(${PROJECT_NAME} "main.cpp" "JoystickController.cpp" "JoystickController.h" "UDPSender.cpp" "UDPSender.h" "JoystickErrors.h")

include_directories(${PROJECT_NAME} ${SDL2_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})

У меня нет большого опыта работы с CMake, потому что я использую qmake каждый раз при сборке приложения,но на этот раз я вынужден использовать CMake.Этот файл сделан из интернет-учебников, поэтому я не могу сказать, хорошо это или неправильно, но это единственный способ, которым моя IDE будет загружать заголовочные файлы.

Странно, что в системе Linux я использовал #include <SDL/...h>, но в Windows я использую только #include <...h>, потому что при первом способе он не находит файл.

Где яЯ делаю ошибку?Как правильно добавить эту библиотеку в CMakeList?

Спасибо за помощь.

1 Ответ

0 голосов
/ 19 февраля 2019

Предполагая, что вы создаете SDL из источника, вы можете легко импортировать цели SDL.

Для построения SDL:

mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=c:/local/ ..
cmake --build . --target install

Затем в вашем проекте:

cmake_minimum_required(VERSION 3.7)

project(Joystick)

add_executable(Joystick main.cpp JoystickController.cpp UDPSender.cpp)

target_link_libraries(Joystick PUBLIC SDL2:SDL2)

Затем при вызове CMake укажите свой префикс для своих библиотек:

cmake -DCMAKE_PREFIX_PATH=c:/local/ ..

В linux префикс по умолчанию будет искать любые системные библиотеки.

...