正确设置bgfx(和项目结构)

时间:2017-05-26 11:07:12

标签: c++ cmake clion bgfx

所以,我有一个c ++项目,我希望可视化(实时),所以我一直在寻找渲染引擎,并找到了bgfx

我不经常写c ++的东西,使用第三方项目似乎令人难以置信 很费劲,但也许我只是做错了什么,希望你能把我推向正确的方向。

我的第一次尝试是在linux上,我克隆了bgfx.cmake并按照自述文件,然后我 使用make install将库安装到" / usr / local / include"。

这似乎最初起作用,因为我的IDE(CLion)在使用#import时识别出bgfx。

然后我试着让HelloWorld示例工作。我最终将bgfx examples文件夹复制到我的项目中的子文件夹" thirdparty",因为所有的例子都高度使用" examples / common"文件夹中。

我认为我的CMakeLists.txt出了问题,因为当我尝试运行项目时,我的IDE可以解析并自动完成所有内容时出现编译错误:

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

ENTRY_IMPLEMENT_MAIN(ExampleClass)行,其中ENTRY_IMPLEMENT_MAIN是bgfx定义的宏(here)

经过几个小时后,我决定从头开始:

我做了一个项目" bgfx_test"与子文件夹" thirdparty"在第三方文件夹中我克隆了bgfx.cmake项目,并将add_subdirectory("thirdparty/bgfx.cmake")添加到我的CMakeLists.txt

我再次创建了一个main.cpp,我从bgfx示例中添加了ExampleHelloWorld类。

我把它改成了一个空的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")

之后我尝试用fips进行设置 在我向依赖项添加了一些符号链接之后,它才起作用

(将libXinerama.so关联到libXinerama.so.1之类的内容,因为fips无法在最后找到' .1'

所以现在我可以运行这些示例甚至在Windows上设置项目 - 至少对于示例而言。

但我真的不想在" bgfx / exampels"中写我的应用程序。夹

但即使以这种方式设置,我也无法让它在外面工作

修改

因为它似乎不够明确:

我的问题:

  • 为什么我会得到未解决的参考错误?对我来说根本没有意义。
  • 在Windows上设置bgfx(如在文档中)或通过fips设置bgfx时,如何在不在"示例"中编写代码的情况下使其工作。第三方图书馆的文件夹?

看一个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

谷歌产生的唯一有用的命中是this,但没有答案:/

1 个答案:

答案 0 :(得分:3)

它适用于此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)