81 lines
3.3 KiB
CMake
81 lines
3.3 KiB
CMake
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 () |