Итак, у меня есть проект 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»
но я не могу заставить его работать вне его, даже когда настраиваю этот путь
редактировать
так как это казалось недостаточно ясным:
Мои вопросы:
было бы замечательно увидеть 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 этот но это без ответа: /
это работало с этим 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)
Других решений пока нет …