2017-05-26 185 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)