[英]Packaging fonts and shaders with cmake
我正在編寫在Windows,OSX和Linux上運行的OpenGL應用程序。
我與應用程序打包了一些免費的TrueType字體 ,因此用戶可以為我的渲染的文本部分選擇首選字體。
我有一些自己制作的glsl着色器 ,因此我的渲染恰到好處。 我也需要與應用打包
我使用cmake進行構建,並使用cpack進行安裝。 我使用install命令來控制字體和着色器在目標計算機上的位置。
我有C ++代碼,給定字體文件的路徑,它將在渲染的圖像中為我提供正確的字體。 同樣,我有OpenGL代碼,需要在運行時知道着色器在哪里。
在構建機器上,我使用configure_file處理OS /用戶版本。 字體和着色器相對於代碼所在的目錄,因此我可以將它們的位置作為名稱空間變量放入頭文件中,並且陰影和字體代碼始終可以找到它們。
現在,我試圖使已安裝的應用程序正常運行,我遇到了一個問題:在安裝時,我可以將字體和着色器放在目標計算機上我喜歡的任何位置,但是正在努力查看運行時(已安裝)可執行文件的方式可以使目標計算機上的理解該位置在哪里。
編譯器標志? 環境變量? 目標物業? 他們似乎都不完全符合要求。 還是那是錯的? 任何想法將不勝感激。
您有兩種可能:
/usr/bin
。 Linux具有完全不同的安裝理念。 資源安裝在標准位置,這些位置不在二進制文件本身的相對固定位置(使用ProgramData和.AppData在此方向上移動的窗口)
Linux的方法是使用fontconfig定位字體,然后在系統范圍內的/ usr / share / fonts / myapp或用戶目錄(〜/ .fonts / myapp或更好的新XDG位置)中安裝字體。
對於着色器,它與系統范圍的/ usr / share / myapp和用戶端的XDG位置類似( https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html )
當然,您可以在代碼中強制執行所需的任何操作,然后將其安裝在/ opt中,但它永遠不會像來自用戶POW的集成Linux應用程序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.