因此,我有一个C++项目,我想(实时)可视化内容,因此我正在寻找一个渲染引擎,并找到了bgfx
我不经常写c++东西,而且使用第三方项目似乎令人难以置信
费力,但也许我只是做错了一切,希望您能将我推向正确的方向。

我的第一次尝试是在Linux上,我克隆了bgfx.cmake并遵循了自述文件,然后我
使用make install将库安装到“/ usr / local / include”。
这似乎起初是可行的,因为使用#import时,我的IDE(CLion)可以识别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)

经过几个烦人的小时,我决定从头开始:
我在第三方文件夹中用子文件夹“thirdparty”创建了一个项目“bgfx_test”,我克隆了bgfx.cmake项目,并将add_subdirectory("thirdparty/bgfx.cmake")添加到了我的CMakeLists.txt中
我再次做了一个main.cpp,在其中我从bgfx示例中添加了ExampleHelloWorld类。
我将其更改为具有空的update()方法,因此我不需要示例中的logo.h和screeshot.png文件。我将include更改为:

#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**)'( Unresolved reference )
如果有人可以帮助我,那真棒
我的文件夹结构:
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进行设置
在我向依赖项添加了一些符号链接(symbolic link)后,它起作用了
(类似于将libXinerama.so链接到libXinerama.so.1,因为fips找不到结尾处带有'.1'的字符串)
所以现在我可以运行示例,甚至可以在工作的Windows上设置项目-至少对于示例而言。
但我真的很想不在“bgfx / exampels”文件夹中编写我的应用程序
但是即使以这种方式设置,我也无法在它之外工作
编辑
因为它似乎还不够清楚:
我的问题:
  • 为什么会出现 Unresolved reference 错误?这对我完全没有意义。
  • 在Windows上(如在文档中)或通过fips设置bgfx时,如何在不将代码写入第三方库的“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我得到下一个错误:

    谷歌产生的唯一有用的命中词是this,但未得到回答:/

    最佳答案

    它与此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)
    

    关于c++ - 正确设置bgfx(和项目结构),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44199997/

    10-11 16:56