SFML/examples/cocoa/CMakeLists.txt
Chris Thrasher 65fef85b30 Simplify how examples are built
CMake doesn't require absolute paths so we can safely remove
SRCROOT and let implicit relative pathing achieve the same result
with less work on our part.
2022-06-16 23:56:39 +02:00

59 lines
2.2 KiB
CMake

# Usage: compile_xib(INPUT path/to/file.xib OUTPUT path/to/file.nib)
function(compile_xib)
cmake_parse_arguments(THIS "" "INPUT;OUTPUT" "" ${ARGN})
if (NOT THIS_INPUT)
message(FATAL_ERROR "Missing required argument INPUT in call to compile_xib()")
endif()
if (NOT THIS_OUTPUT)
message(FATAL_ERROR "Missing required argument OUTPUT in call to compile_xib()")
endif()
if (NOT DEFINED IBTOOL)
find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
endif()
if(NOT IBTOOL)
message(FATAL_ERROR "ibtool is required to compile .xib files but wasn't found.")
endif()
# Default args taken from Xcode 9 when it generates a nib from a xib
set(DEFAULT_ARGS --errors --warnings --notices --module cocoa --auto-activate-custom-fonts --target-device mac --output-format human-readable-text)
add_custom_command(OUTPUT "${THIS_OUTPUT}"
COMMAND "${IBTOOL}" ${DEFAULT_ARGS} "${THIS_INPUT}" --compile "${THIS_OUTPUT}"
DEPENDS "${THIS_INPUT}"
COMMENT "Generating ${THIS_OUTPUT}"
VERBATIM)
endfunction()
# all source files
set(SRC CocoaAppDelegate.h
CocoaAppDelegate.mm
NSString+stdstring.h
NSString+stdstring.mm
main.m)
compile_xib(INPUT "MainMenu.xib" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/MainMenu.nib")
# all resource files
set(RESOURCES resources/icon.icns
resources/tuffy.ttf
resources/logo.png
resources/blue.png
resources/green.png
resources/red.png
resources/Credits.rtf
${CMAKE_CURRENT_BINARY_DIR}/MainMenu.nib)
set_source_files_properties(${RESOURCES} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources)
# define the cocoa target and customize it
sfml_add_example(cocoa
SOURCES ${SRC}
BUNDLE_RESOURCES ${RESOURCES}
DEPENDS SFML::System SFML::Window SFML::Graphics)
set_target_properties(cocoa PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_INFO_PLIST resources/Cocoa-Info.plist)
target_link_libraries(cocoa PRIVATE "-framework Cocoa" "-framework Foundation" SFML::Graphics)