правильно настроить bgfx (и структуру проекта)

Итак, у меня есть проект C ++, где я хочу визуализировать вещи (в режиме реального времени), поэтому я искал движок рендеринга, и нашел bgfx.

Я не часто пишу вещи на С ++, и использование сторонних проектов кажется невероятным
трудоемко, но, возможно, я просто делаю все неправильно, и, надеюсь, вы можете подтолкнуть меня в правильном направлении.



Моя первая попытка была на Linux, я клонировал bgfx.cmake и следовал за readme, то я
используемый make install который установил библиотеки в «/ usr / local / include».

сначала это сработало, потому что моя IDE (CLion) распознала bgfx при использовании #import,

Затем я попытался заставить пример HelloWorld работать. В итоге я скопировал папку с примерами bgfx в мой проект в подпапке «thirdparty», потому что во всех примерах широко используется папка «examples / common».

и я думаю, что я сделал что-то не так с моим CMakeLists.txt, потому что, хотя моя IDE может разрешать и автозаполнять все, я получаю ошибку компилятора при попытке запустить проект:

Unresolved references 'entry::runApp(entry::AppI*, int, char**)'

на линии ENTRY_IMPLEMENT_MAIN(ExampleClass) где ENTRY_IMPLEMENT_MAIN — определенный макрос bgfx (Вот).


после нескольких раздражающих часов я решил начать с нуля:

я сделал проект «bgfx_test» с подпапкой «thirdparty» в папке «третьих сторон», я клонировал проект bgfx.cmake и добавил add_subdirectory("thirdparty/bgfx.cmake") в мой CMakeLists.txt

я снова сделал main.cpp, где я добавил класс ExampleHelloWorld из примеров bgfx.

я изменил его, чтобы иметь пустой метод update (), поэтому мне не нужен файл logo.h и screeshot.png из примера. и я изменил включает в себя:

#include "thirdparty/bgfx.cmake/bgfx/examples/common/common.h"#include "thirdparty/bgfx.cmake/bgfx/examples/common/bgfx_utils.h"

та же самая ошибка снова, моя IDE автоматически завершает все, но компилятор говорит:

Nicht definierter Verweis auf 'entry::runApp(entry::AppI*, int, char**)'
(неразрешенная ссылка)

если бы кто-то мог помочь мне с этим, это было бы здорово

структура моей папки:

project-root
main.cpp
CMakeLists.txt
thirdparty
bgfx.cmake (clone of the repo mentioned above)

мой CMakeLists.txt:

cmake_minimum_required(VERSION 3.7)
project(bgfx_test)

set(CMAKE_CXX_STANDARD 14)

set(SOURCE_FILES main.cpp)
add_executable(bgfx_test ${SOURCE_FILES})

add_subdirectory("thirdparty/bgfx.cmake")

после этого я попытался настроить его с ФИПС
который работал после того, как я добавил несколько символических ссылок на зависимости

(такие вещи, как ссылки libXinerama.so в libXinerama.so.1 потому что fips не может найти его с ‘.1’ в конце)

так что теперь я могу запускать примеры и даже настраивать проект под Windows — по крайней мере, для примеров.

но я бы очень не хотел писать свое приложение в папке «bgfx / exampels»

но я не могу заставить его работать вне его, даже когда настраиваю этот путь

редактировать

так как это казалось недостаточно ясным:

Мои вопросы:

  • Почему я получаю неразрешенную справочную ошибку? это не имеет никакого смысла для меня.
  • При настройке bgfx в Windows (как в документации) или с помощью fips, как я могу заставить его работать без записи моего кода в папке «examples» сторонней библиотеки?

было бы замечательно увидеть CMakeLists.txt для крошечного примера или просто сказать мне, что не так с моим


изменить 2 (27.05.2017):

после того как я добавил

target_link_libraries(bgfx_test bx)
target_link_libraries(bgfx_test bgfx)
target_link_libraries(bgfx_test bimg)

на мой CMakeLists.txt я получаю следующую ошибку:

/ usr / bin / ld: thirdparty / bgfx.cmake / libbgfxd.a (glcontext_glx.cpp.o): неопределенная ссылка на символ ‘XFree’

//usr/lib/x86_64-linux-gnu/libX11.so.6: ошибка при добавлении символов: DSO отсутствует в командной строке

где единственный полезный хит производит Google этот но это без ответа: /

2

Решение

это работало с этим CMakeLists.txt:

cmake_minimum_required(VERSION 3.7)
project(bgfx_test)

set(CMAKE_CXX_STANDARD 14)
set(SOURCE_FILES main.cpp)

add_subdirectory("thirdparty/bgfx.cmake")
add_executable(bgfx_test ${SOURCE_FILES} )

target_link_libraries(bgfx_test bgfx example-common)
3

Другие решения

Других решений пока нет …