Как связать библиотеки маркеров (из FindBullet.cmake)? - PullRequest
0 голосов
/ 08 июня 2019

Я разрабатываю игру и пытаюсь использовать пулю. Однако (кажется, что) у меня возникли проблемы с подключением библиотек маркеров. Изменить 2: у меня есть мой код на GitHub

Это мой первый раз, когда я использую cmake. Я искал файл FindBullet.cmake и смог найти переменную для связи библиотек ($ {BULLET_LIBRARIES}), но связывание библиотек в переменной ничего не сделало.

    find_package(Bullet REQUIRED)
    include_directories(${BULLET_INCLUDE_DIR})
    target_link_libraries(3DPlatformer ${BULLET_LIBRARIES})

Я ожидал, что мой код скомпилируется, но вместо этого я получил кучу «неопределенных ссылок на», а затем любую функцию из пули, которую он прочитал. Редактирование:

more undefined references to `btAlignedAllocInternal(unsigned long, int)' follow

^ вот что я получил кучу

collect2: error: ld returned 1 exit status

И это последняя ошибка. Полная ошибка

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Моя проблема в том, что одно из моих утверждений if было нарушено.Мое утверждение if:

if(USE_SYSTEM_BULLET)
    find_package(Bullet REQUIRED)
    include_directories(${BULLET_INCLUDE_DIR})
    target_link_libraries(3DPlatformer ${BULLET_LIBRARIES} -lGL -lGLU)
else(USE_SYSTEM_BULLET)
    add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet" )
    include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
endif(USE_SYSTEM_BULLET)

каким-то образом вызывало весь код вместо некоторого.комментируя код так:

#if(USE_SYSTEM_BULLET)
    find_package(Bullet REQUIRED)
    include_directories(${BULLET_INCLUDE_DIR})
    target_link_libraries(3DPlatformer ${BULLET_LIBRARIES} -lGL -lGLU)
#else(USE_SYSTEM_BULLET)
#   add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet" )
#   include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
#endif(USE_SYSTEM_BULLET)

исправил его.

0 голосов
/ 08 июня 2019

libbullet-dev необходимо установить.

sudo apt-get install libbullet-dev
...