1 2link_libraries(glfw) 3 4include_directories("${GLFW_SOURCE_DIR}/deps") 5 6if (MATH_LIBRARY) 7 link_libraries("${MATH_LIBRARY}") 8endif() 9 10# Workaround for the MS CRT deprecating parts of the standard library 11if (MSVC OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC") 12 add_definitions(-D_CRT_SECURE_NO_WARNINGS) 13endif() 14 15if (WIN32) 16 set(ICON glfw.rc) 17elseif (APPLE) 18 set(ICON glfw.icns) 19endif() 20 21set(GLAD_GL "${GLFW_SOURCE_DIR}/deps/glad/gl.h") 22set(GLAD_GLES2 "${GLFW_SOURCE_DIR}/deps/glad/gles2.h") 23set(GETOPT "${GLFW_SOURCE_DIR}/deps/getopt.h" 24 "${GLFW_SOURCE_DIR}/deps/getopt.c") 25set(TINYCTHREAD "${GLFW_SOURCE_DIR}/deps/tinycthread.h" 26 "${GLFW_SOURCE_DIR}/deps/tinycthread.c") 27 28add_executable(boing WIN32 MACOSX_BUNDLE boing.c ${ICON} ${GLAD_GL}) 29add_executable(gears WIN32 MACOSX_BUNDLE gears.c ${ICON} ${GLAD_GL}) 30add_executable(heightmap WIN32 MACOSX_BUNDLE heightmap.c ${ICON} ${GLAD_GL}) 31add_executable(offscreen offscreen.c ${ICON} ${GLAD_GL}) 32add_executable(particles WIN32 MACOSX_BUNDLE particles.c ${ICON} ${TINYCTHREAD} ${GETOPT} ${GLAD_GL}) 33add_executable(sharing WIN32 MACOSX_BUNDLE sharing.c ${ICON} ${GLAD_GL}) 34add_executable(splitview WIN32 MACOSX_BUNDLE splitview.c ${ICON} ${GLAD_GL}) 35add_executable(triangle-opengl WIN32 MACOSX_BUNDLE triangle-opengl.c ${ICON} ${GLAD_GL}) 36add_executable(triangle-opengles WIN32 MACOSX_BUNDLE triangle-opengles.c ${ICON} ${GLAD_GLES2}) 37add_executable(wave WIN32 MACOSX_BUNDLE wave.c ${ICON} ${GLAD_GL}) 38add_executable(windows WIN32 MACOSX_BUNDLE windows.c ${ICON} ${GLAD_GL}) 39 40target_link_libraries(particles Threads::Threads) 41if (RT_LIBRARY) 42 target_link_libraries(particles "${RT_LIBRARY}") 43endif() 44 45set(GUI_ONLY_BINARIES boing gears heightmap particles sharing splitview 46 triangle-opengl triangle-opengles wave windows) 47set(CONSOLE_BINARIES offscreen) 48 49set_target_properties(${GUI_ONLY_BINARIES} ${CONSOLE_BINARIES} PROPERTIES 50 C_STANDARD 99 51 FOLDER "GLFW3/Examples") 52 53if (MSVC) 54 # Tell MSVC to use main instead of WinMain 55 set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES 56 LINK_FLAGS "/ENTRY:mainCRTStartup") 57elseif (CMAKE_C_SIMULATE_ID STREQUAL "MSVC") 58 # Tell Clang using MS CRT to use main instead of WinMain 59 set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES 60 LINK_FLAGS "-Wl,/entry:mainCRTStartup") 61endif() 62 63if (APPLE) 64 set_target_properties(boing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Boing") 65 set_target_properties(gears PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Gears") 66 set_target_properties(heightmap PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Heightmap") 67 set_target_properties(particles PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Particles") 68 set_target_properties(sharing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Sharing") 69 set_target_properties(triangle-opengl PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "OpenGL Triangle") 70 set_target_properties(triangle-opengles PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "OpenGL ES Triangle") 71 set_target_properties(splitview PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "SplitView") 72 set_target_properties(wave PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Wave") 73 set_target_properties(windows PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Windows") 74 75 set_source_files_properties(glfw.icns PROPERTIES 76 MACOSX_PACKAGE_LOCATION "Resources") 77 set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES 78 MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION} 79 MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION} 80 MACOSX_BUNDLE_ICON_FILE glfw.icns 81 MACOSX_BUNDLE_INFO_PLIST "${GLFW_SOURCE_DIR}/CMake/Info.plist.in") 82endif() 83 84