
AKA Chris, is a software developer from Athens, Greece. He started programming with basic when he was very young. He lost interest in programming during school years but after an unsuccessful career in audio, he decided focus on what he really loves which is technology.
He loves working with older languages like C and wants to start programming electronics and microcontrollers because he wants to get into embedded systems programming.
Today, I had trouble setting up CMake to add the assets to the .app container. After messing around with the code I found on Stack Overflow, I was able to fix it and add the font files to the project. The whole process was quite complicated though.
CMake Code
# Read more on adding files https://stackoverflow.com/questions/41121000/cmake-os-x-bundle-recursively-copy-directory-to-resources
# This gets the absolute path to the each .ttf file that exists in the fodler
file(GLOB_RECURSE FONT_SOURCES "fonts/*.ttf")
add_executable(${PROJECT_NAME} MACOSX_BUNDLE
# Source files
${FONT_SOURCES})
# Get each path
foreach(FONT_FILE ${FONT_SOURCES})
# CMAKE_CURRENT_SOURCE_DIR is the absolute path to the top-level CMakeLists.txt file
# The RELATIVE_PATH command removes the CMakeLists path from the
# FONT_FILE path and keep the relative path to the .ttf file
# This means that the RES_PATH variable only has "fonts/name.ttf" now
file(RELATIVE_PATH RES_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ${FONT_FILE})
# keep only the name of the folder
# It removes the file name and keeps the directory
# We need to do that to get the name of the folder only
# The value of the NEW_FILE_PATH variable is fonts
get_filename_component(NEW_FILE_PATH ${RES_PATH} DIRECTORY)
# Add the file that is located at the end of the FONT_FILE path to the
# fonts folder
set_property(SOURCE ${FONT_FILE} PROPERTY MACOSX_PACKAGE_LOCATION "${NEW_FILE_PATH}")
endforeach(FONT_FILE)
Now everything works! However, I couldn't load the fonts even though the path was correct on the program's source file. This is an intricacy of MacOS .app bundle system. When I run the executable UNIX file the application launches and loads the fonts. This is not the case if I execute the .app file.
To fix this issue, I might have to use some Objective-C code.




