【问题标题】:correctly setup bgfx (and project structure)正确设置 bgfx(和项目结构)
【发布时间】:2017-05-26 11:07:12
【问题描述】:

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

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



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

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

然后我尝试让 HelloWorld 示例工作。我最终将 bgfx 示例文件夹复制到我的项目中的子文件夹“第三方”下,因为所有示例都高度使用了“示例/通用”文件夹。

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

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

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


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

我在第三方文件夹中创建了一个带有子文件夹“thirdparty”的项目“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.so 链接到libXinerama.so.1 之类的东西,因为fips 在末尾找不到'.1')

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

但我真的不想在“bgfx/exampels”文件夹中编写我的应用程序

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

编辑

因为它似乎不够清楚:

我的问题:

  • 为什么会出现未解决的参考错误?这对我来说完全没有意义。
  • 在 Windows 上(如在文档中)或通过 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,但没有得到答复:/

【问题讨论】:

  • 你希望有人为bfgx编写骨架示例吗?这太宽泛了。您想对现有示例提供帮助吗?然后你需要提供它的代码。此外,在问题帖子的末尾,您似乎解决了问题。那么,您究竟想要什么
  • 我试图澄清一下:我只想将 bgfx 用作第三方应用程序,而不是在他们的示例文件夹中编写我的代码。我想知道为什么我的 IDE 可以解决所有问题,但编译器会抛出错误。为什么用第三方软件建立 c++ 项目本来就很难?
  • 自动完成时,IDE 会查找 声明函数的标头。错误“未解析的引用”意味着找不到函数的定义。函数在.c 代码或您链接的库中定义。

标签: c++ cmake clion bgfx


【解决方案1】:

它与这个 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)

【讨论】:

    猜你喜欢
    • 2012-09-06
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多