Неопределенная ссылка на RayLibs при связывании с CMake?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неопределенная ссылка на RayLibs при связывании с CMake?

Сообщение Anonymous »

Начнем с того, что я новичок в рабочей области разработки и CMake.
В качестве тестового проекта я пытаюсь использовать CMake для настройки простого проекта, связывающего raylibs. После долгих консультаций с документацией и различными руководствами (Введение в современный CMake, Профессиональный CMake, 18-е издание) я чувствую, что сделал все правильно, но всякий раз, когда я пытаюсь запустить свою основную систему, я продолжаю получать необъявленные ссылки на мои вызовы функций.

Код: Выделить всё

/usr/bin/ld: /home/doppler/C++ Projects/test 2/source/main.cpp:15: undefined reference to `SetTargetFPS'
Краткий обзор того, как я начал этот проект:
Создал каталог, test2, внешний, исходный код.
Использовал быстрый запуск CMake в VS Код
git клонировал raylibs во внешний
отредактировал мой файл CMake;

Код: Выделить всё

cmake_minimum_required(VERSION 3.30.0)
project(test2 VERSION 0.1.0 LANGUAGES C CXX)

set(MAIN_PATH source/main.cpp)

add_executable(${PROJECT_NAME} ${MAIN_PATH})

add_subdirectory(external/raylib)
include_directories("external" "external/raylib/src")
target_link_libraries(${PROJECT_NAME} PRIVATE raylib)
Открыл терминал в моем основном каталоге;
mkdir build
cd build
cmake --build .
Запустите main, чтобы не найти последующих ошибки, за исключением неопределенных неопределенных ссылок.
Выполнение cmake --build . --verbose возвращает:

Код: Выделить всё

doppler@doppler-Dell-G15-5510:~/C++ Projects/test 2/build$ cmake --build .  --verbose
Change Dir: '/home/doppler/C++ Projects/test 2/build'

Run Build Command(s): /home/doppler/.local/lib/python3.10/site-packages/cmake/data/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile
/home/doppler/.local/lib/python3.10/site-packages/cmake/data/bin/cmake -S"/home/doppler/C++ Projects/test 2" -B"/home/doppler/C++ Projects/test 2/build" --check-build-system CMakeFiles/Makefile.cmake 0
/home/doppler/.local/lib/python3.10/site-packages/cmake/data/bin/cmake -E cmake_progress_start "/home/doppler/C++ Projects/test 2/build/CMakeFiles" "/home/doppler/C++ Projects/test 2/build//CMakeFiles/progress.marks"
/usr/bin/gmake  -f CMakeFiles/Makefile2 all
gmake[1]: Entering directory '/home/doppler/C++ Projects/test 2/build'
/usr/bin/gmake  -f external/raylib/raylib/external/glfw/src/CMakeFiles/glfw.dir/build.make external/raylib/raylib/external/glfw/src/CMakeFiles/glfw.dir/depend
gmake[2]: Entering directory '/home/doppler/C++ Projects/test 2/build'
cd "/home/doppler/C++ Projects/test 2/build" && /home/doppler/.local/lib/python3.10/site-packages/cmake/data/bin/cmake -E cmake_depends "Unix Makefiles" "/home/doppler/C++ Projects/test 2" "/home/doppler/C++ Projects/test 2/external/raylib/src/external/glfw/src" "/home/doppler/C++ Projects/test 2/build" "/home/doppler/C++ Projects/test 2/build/external/raylib/raylib/external/glfw/src" "/home/doppler/C++ Projects/test 2/build/external/raylib/raylib/external/glfw/src/CMakeFiles/glfw.dir/DependInfo.cmake" "--color="
gmake[2]: Leaving directory '/home/doppler/C++ Projects/test 2/build'
/usr/bin/gmake  -f external/raylib/raylib/external/glfw/src/CMakeFiles/glfw.dir/build.make external/raylib/raylib/external/glfw/src/CMakeFiles/glfw.dir/build
gmake[2]: Entering directory '/home/doppler/C++ Projects/test 2/build'
gmake[2]: Nothing to be done for 'external/raylib/raylib/external/glfw/src/CMakeFiles/glfw.dir/build'.
gmake[2]: Leaving directory '/home/doppler/C++ Projects/test 2/build'
[ 81%] Built target glfw
/usr/bin/gmake  -f external/raylib/raylib/CMakeFiles/raylib.dir/build.make external/raylib/raylib/CMakeFiles/raylib.dir/depend
gmake[2]: Entering directory '/home/doppler/C++ Projects/test 2/build'
cd "/home/doppler/C++ Projects/test 2/build" && /home/doppler/.local/lib/python3.10/site-packages/cmake/data/bin/cmake -E cmake_depends "Unix Makefiles" "/home/doppler/C++ Projects/test 2" "/home/doppler/C++ Projects/test 2/external/raylib/src" "/home/doppler/C++ Projects/test 2/build" "/home/doppler/C++ Projects/test 2/build/external/raylib/raylib" "/home/doppler/C++ Projects/test 2/build/external/raylib/raylib/CMakeFiles/raylib.dir/DependInfo.cmake" "--color="
gmake[2]: Leaving directory '/home/doppler/C++ Projects/test 2/build'
/usr/bin/gmake  -f external/raylib/raylib/CMakeFiles/raylib.dir/build.make external/raylib/raylib/CMakeFiles/raylib.dir/build
gmake[2]: Entering directory '/home/doppler/C++ Projects/test 2/build'
gmake[2]: Nothing to be done for 'external/raylib/raylib/CMakeFiles/raylib.dir/build'.
gmake[2]: Leaving directory '/home/doppler/C++ Projects/test 2/build'
[ 96%] Built target raylib
/usr/bin/gmake  -f CMakeFiles/test2.dir/build.make CMakeFiles/test2.dir/depend
gmake[2]: Entering directory '/home/doppler/C++ Projects/test 2/build'
cd "/home/doppler/C++ Projects/test 2/build" &&  /home/doppler/.local/lib/python3.10/site-packages/cmake/data/bin/cmake -E cmake_depends "Unix Makefiles" "/home/doppler/C++ Projects/test 2" "/home/doppler/C++ Projects/test 2" "/home/doppler/C++ Projects/test 2/build" "/home/doppler/C++ Projects/test 2/build" "/home/doppler/C++ Projects/test 2/build/CMakeFiles/test2.dir/DependInfo.cmake" "--color="
gmake[2]: Leaving directory '/home/doppler/C++ Projects/test 2/build'
/usr/bin/gmake  -f CMakeFiles/test2.dir/build.make CMakeFiles/test2.dir/build
gmake[2]: Entering directory '/home/doppler/C++ Projects/test 2/build'
[ 98%] Building CXX object CMakeFiles/test2.dir/source/main.cpp.o
/usr/bin/c++ -DGRAPHICS_API_OPENGL_33 -DPLATFORM_DESKTOP -I"/home/doppler/C++ Projects/test 2/external" -I"/home/doppler/C++ Projects/test 2/external/raylib/src" -I"/home/doppler/C++ Projects/test 2/external/raylib/src/external/glfw/include" -g -MD -MT CMakeFiles/test2.dir/source/main.cpp.o -MF CMakeFiles/test2.dir/source/main.cpp.o.d -o CMakeFiles/test2.dir/source/main.cpp.o -c "/home/doppler/C++ Projects/test 2/source/main.cpp"
[100%] Linking CXX executable test2
/home/doppler/.local/lib/python3.10/site-packages/cmake/data/bin/cmake -E cmake_link_script CMakeFiles/test2.dir/link.txt --verbose=1
/usr/bin/c++ -g CMakeFiles/test2.dir/source/main.cpp.o -o test2  external/raylib/raylib/libraylib.a -lm -lpthread /usr/lib/x86_64-linux-gnu/libOpenGL.so /usr/lib/x86_64-linux-gnu/libGLX.so /usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/librt.a -lm -ldl
gmake[2]: Leaving directory '/home/doppler/C++ Projects/test 2/build'
[100%] Built target test2
gmake[1]: Leaving directory '/home/doppler/C++ Projects/test 2/build'
/home/doppler/.local/lib/python3.10/site-packages/cmake/data/bin/cmake -E cmake_progress_start "/home/doppler/C++ Projects/test 2/build/CMakeFiles" 0


Я попробовал перечитать документацию и просмотреть все руководства Ранее я просматривал и ссылался на другие проекты, использующие Cmake и raylibs. Несколько дней назад я разместил свой вопрос на Reddit CMake. После некоторого движения вперед и назад я оказался там же, где и начал.

Подробнее здесь: https://stackoverflow.com/questions/787 ... with-cmake
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»