2017-05-26 64 views
2

所以,我有一个C++项目,我想要可视化的东西(实时),所以我正在寻找一个渲染引擎,并发现bgfx正确设置bgfx(和项目结构)

我不会经常写C++的东西,而使用第三方项目似乎令人难以置信 辛苦,但也许我只是做了一切错误,希望你能把我推向正确的方向。



我的第一次尝试是在Linux上,我克隆bgfx.cmake并遵循自述,然后我 使用make install其安装在图书馆的到“的/ usr /本地/包括”。

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

然后我试着让HelloWorld例子工作。我最终将bgfx示例文件夹复制到我的项目下的子文件夹“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”与在第三方文件夹我克隆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.solibXinerama.so.1因为FIPS找不到它的工作将其设置它与'.1'在最后)

所以现在我可以运行的例子,甚至在Windows上设置项目工作 - 至少为例子。

,但我真的很想在“bgfx/exampels”文件夹

不写我的应用程序,但我不能得到它的它外面工作,即使设立时这样

编辑

,因为它似乎没有足够清楚:

我的问题:

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

那就太好看的CMakeLists.txt一个小小的例子,或只是告诉我,什么是错与我


编辑2(2017年5月27日):在我

加入

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): undefined reference to symbol 'XFree'

//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line

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

+0

你希望有人写** **骨架例子为'bfgx'?这太宽泛了。你想帮助**现有的**例子吗?那么你需要提供它的代码。另外,在问题结尾处,您似乎可以解决问题。那么,你想**完全**? – Tsyvarev

+0

我试图澄清一点:我只是想使用bgfx作为第三方应用程序,而不是在他们的示例文件夹中编写我的代码。我想知道为什么我的IDE可以解决所有问题,但编译器会报错。 为什么使用第三方软件设置C++项目本质上很难? – Soraphis

+1

当自动完成时,IDE会查找*声明该函数的标头。错误“无法解析的参考”意味着找不到函数的**定义**。函数在'.c'代码中或在您链接的库中定义。 – Tsyvarev

回答

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)