imgui/CMakeLists.txt
2024-06-21 17:47:52 +08:00

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 ()