正确设置 bgfx(和项目结构)
correctly setup bgfx (and project structure)
所以,我有一个 c++ 项目,我想在其中可视化东西(实时),所以我一直在寻找渲染引擎,并找到了 bgfx。
我不经常写c++的东西,使用第三方项目似乎令人难以置信
费力,但也许我只是做错了一切,希望你能把我推向正确的方向。
我的第一次尝试是在 linux 上,我克隆了 bgfx.cmake 并遵循了自述文件,然后我
使用 make install
将库安装到“/usr/local/include”。
起初这似乎可行,因为我的 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”,子文件夹为“thirdparty”我克隆了 bgfx.cmake 项目,并将 add_subdirectory("thirdparty/bgfx.cmake")
添加到我的 CMakeLists.txt
我又做了一个 main.cpp,我在其中添加了来自 bgfx 示例的 ExampleHelloWorld class。
我将其更改为具有空的 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(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
唯一有用的命中 google 产生的是 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。
我不经常写c++的东西,使用第三方项目似乎令人难以置信 费力,但也许我只是做错了一切,希望你能把我推向正确的方向。
我的第一次尝试是在 linux 上,我克隆了 bgfx.cmake 并遵循了自述文件,然后我
使用 make install
将库安装到“/usr/local/include”。
起初这似乎可行,因为我的 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”,子文件夹为“thirdparty”我克隆了 bgfx.cmake 项目,并将 add_subdirectory("thirdparty/bgfx.cmake")
添加到我的 CMakeLists.txt
我又做了一个 main.cpp,我在其中添加了来自 bgfx 示例的 ExampleHelloWorld class。
我将其更改为具有空的 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(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
唯一有用的命中 google 产生的是 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)