project(imgui LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_C_STANDARD 11) # 如果是macos if (APPLE) # 设置语言 set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 11) # 设置编译选项 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -x objective-c++") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -x objective-c") endif () set(ALL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui_draw.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui_internal.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui_tables.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui_widgets.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imstb_rectpack.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imstb_textedit.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imstb_truetype.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui/misc/freetype/imgui_freetype.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/misc/freetype/imgui_freetype.h ${CMAKE_CURRENT_SOURCE_DIR}/imconfig.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui_main.h ) # windows if (WIN32) list(APPEND ALL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_win32.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_win32.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_dx11.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_dx11.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui_windows_main.cpp ) # macos elseif (APPLE) list(APPEND ALL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_metal.mm ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_metal.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_glfw.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_glfw.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui_macos_main.mm ) # linux else () list(APPEND ALL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_vulkan.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_vulkan.h ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_glfw.cpp ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_glfw.h ) endif () find_package(PkgConfig REQUIRED) pkg_check_modules(FREETYPE REQUIRED freetype2) include_directories(${FREETYPE_INCLUDE_DIRS}) link_directories(${FREETYPE_LIBRARY_DIRS}) add_definitions(${FREETYPE_CFLAGS_OTHER}) add_library(${PROJECT_NAME} STATIC ${ALL_FILES}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/imgui) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) # windows if (WIN32) target_link_libraries(${PROJECT_NAME} PRIVATE d3d11 dxgi d3dcompiler dwmapi) elseif (APPLE) target_link_libraries(${PROJECT_NAME} PRIVATE "-framework Metal") target_link_libraries(${PROJECT_NAME} PRIVATE "-framework Cocoa") target_link_libraries(${PROJECT_NAME} PRIVATE "-framework IOKit") target_link_libraries(${PROJECT_NAME} PRIVATE "-framework QuartzCore") target_link_libraries(${PROJECT_NAME} PRIVATE glfw) else () target_link_libraries(${PROJECT_NAME} PRIVATE vulkan) target_link_libraries(${PROJECT_NAME} PRIVATE glfw) endif ()