SFML/examples/cocoa/CMakeLists.txt

61 lines
2.2 KiB
CMake
Raw Normal View History

enable_language(OBJC OBJCXX)
# Usage: compile_xib(INPUT path/to/file.xib OUTPUT path/to/file.nib)
function(compile_xib)
cmake_parse_arguments(THIS "" "INPUT;OUTPUT" "" ${ARGN})
2022-10-07 01:33:19 +08:00
if(NOT THIS_INPUT)
message(FATAL_ERROR "Missing required argument INPUT in call to compile_xib()")
endif()
2022-10-07 01:33:19 +08:00
if(NOT THIS_OUTPUT)
message(FATAL_ERROR "Missing required argument OUTPUT in call to compile_xib()")
endif()
2022-10-07 01:33:19 +08:00
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 "${CMAKE_CURRENT_SOURCE_DIR}/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::Graphics)
set_target_properties(cocoa PROPERTIES
MACOSX_BUNDLE ON
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/resources/Cocoa-Info.plist)
target_link_libraries(cocoa PRIVATE "-framework Cocoa" "-framework Foundation")