我正试图在C++
中为练习制作一个小游戏。我正在使用Clion
IDEA,它使用CMake
作为构建系统。
所以我设置了这个使用Allegro
游戏库的项目,我现在可以使用它来运行CMakeLists.txt:
cmake_minimum_required(VERSION 3.3)
project(my-game)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
# Set executeable
add_executable(game ${SOURCE_FILES})
#Include Allegro
include_directories(/usr/include/allegro5/)
link_directories(/usr/include/allegro5/)
#connect all the libraries you need
set(game_LIBS
liballegro.so
liballegro_dialog.so
liballegro_image.so
liballegro_font.so
liballegro_ttf.so
)
target_link_libraries(game ${game_LIBS})
现在的问题是,在我的项目根文件夹中,我有一个名为assets
的文件夹,在其中我想存储我的资产。现在有一个fonts
文件夹,其中包含一个arial.ttf
文件,我想用它来显示游戏中的一些文字。
现在我用来获取此资产并在我的应用程序中使用它的行应该是类似的:
ALLEGRO_FONT *font24 = al_load_ttf_font("/assets/fonts/arial.ttf", 24, 0);
但由于某些原因,当我启动应用程序并开始使用font24
指针时,我收到此错误:
game: /build/buildd/allegro5-5.0.10/addons/font/text.c:77: al_draw_ustr: Assertion `font' failed.
现在,如果我改用这一行:
ALLEGRO_FONT *font24 = al_load_ttf_font("/home/kaspar/Documents/Coding-projects/ClionProjects/my-game/assets/fonts/arial.ttf", 24, 0);
然后应用程序将能够使用所需的字体打印文本。
那么我必须做些什么才能更容易地在项目中引用我的资产?我想,指向一个带有完整系统路径的文件并不是一种健康的做法。