mirror of
https://github.com/cimgui/cimgui.git
synced 2025-08-11 04:18:29 +01:00
made glfw more portable
This commit is contained in:
@@ -1,96 +1,103 @@
|
|||||||
Project(cmimgui_glfw)
|
Project(cmimgui_glfw)
|
||||||
cmake_minimum_required(VERSION 3.1)
|
cmake_minimum_required(VERSION 3.11)
|
||||||
if(WIN32) # to mingw work as all the others
|
if(WIN32) # to mingw work as all the others
|
||||||
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
set (CMAKE_CXX_STANDARD 11)
|
set (CMAKE_CXX_STANDARD 11)
|
||||||
|
|
||||||
# general settings
|
# general settings
|
||||||
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/backends)
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/backends)
|
||||||
set(BAKENDS_FOLDER "../../imgui/backends/")
|
set(BAKENDS_FOLDER "../../imgui/backends/")
|
||||||
else()
|
else()
|
||||||
set(BAKENDS_FOLDER "../../imgui/examples/")
|
set(BAKENDS_FOLDER "../../imgui/examples/")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/imgui_tables.cpp)
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/imgui_tables.cpp)
|
||||||
set(TABLES_SOURCE "../../imgui/imgui_tables.cpp")
|
set(TABLES_SOURCE "../../imgui/imgui_tables.cpp")
|
||||||
else()
|
else()
|
||||||
set(TABLES_SOURCE "")
|
set(TABLES_SOURCE "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories(../../imgui)
|
include_directories(../../imgui)
|
||||||
add_definitions("-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS=1")
|
add_definitions("-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS=1")
|
||||||
|
|
||||||
include_directories(../../)
|
include_directories(../../)
|
||||||
set(IMGUI_SOURCES
|
set(IMGUI_SOURCES
|
||||||
../../cimgui.cpp
|
../../cimgui.cpp
|
||||||
../../imgui/imgui.cpp
|
../../imgui/imgui.cpp
|
||||||
../../imgui/imgui_draw.cpp
|
../../imgui/imgui_draw.cpp
|
||||||
../../imgui/imgui_demo.cpp
|
../../imgui/imgui_demo.cpp
|
||||||
../../imgui/imgui_widgets.cpp
|
../../imgui/imgui_widgets.cpp
|
||||||
${TABLES_SOURCE}
|
${TABLES_SOURCE}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(IMGUI_SOURCES_sdl)
|
set(IMGUI_SOURCES_sdl)
|
||||||
set(IMGUI_LIBRARIES )
|
set(IMGUI_LIBRARIES )
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
add_definitions("-DIMGUI_IMPL_API=extern \"C\" __declspec\(dllexport\)")
|
add_definitions("-DIMGUI_IMPL_API=extern \"C\" __declspec\(dllexport\)")
|
||||||
else(WIN32)
|
else(WIN32)
|
||||||
add_definitions("-DIMGUI_IMPL_API=extern \"C\" ")
|
add_definitions("-DIMGUI_IMPL_API=extern \"C\" ")
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
add_compile_definitions("IMGUI_IMPL_OPENGL_LOADER_GL3W")
|
add_compile_definitions("IMGUI_IMPL_OPENGL_LOADER_GL3W")
|
||||||
|
|
||||||
# optional adding freetype
|
# optional adding freetype
|
||||||
option(IMGUI_FREETYPE "add Freetype2" OFF)
|
option(IMGUI_FREETYPE "add Freetype2" OFF)
|
||||||
|
|
||||||
if(IMGUI_FREETYPE)
|
if(IMGUI_FREETYPE)
|
||||||
FIND_PACKAGE(freetype REQUIRED PATHS ${FREETYPE_PATH})
|
FIND_PACKAGE(freetype REQUIRED PATHS ${FREETYPE_PATH})
|
||||||
list(APPEND IMGUI_LIBRARIES freetype)
|
list(APPEND IMGUI_LIBRARIES freetype)
|
||||||
list(APPEND IMGUI_SOURCES ../../imgui/misc/freetype/imgui_freetype.cpp)
|
list(APPEND IMGUI_SOURCES ../../imgui/misc/freetype/imgui_freetype.cpp)
|
||||||
add_definitions("-DCIMGUI_FREETYPE=1")
|
add_definitions("-DCIMGUI_FREETYPE=1")
|
||||||
endif(IMGUI_FREETYPE)
|
endif(IMGUI_FREETYPE)
|
||||||
|
|
||||||
# opengl3
|
# opengl3
|
||||||
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_opengl3.cpp)
|
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_opengl3.cpp)
|
||||||
include_directories(../../imgui/examples/libs/gl3w)
|
include_directories(../../imgui/examples/libs/gl3w)
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
list(APPEND IMGUI_LIBRARIES opengl32)
|
list(APPEND IMGUI_LIBRARIES opengl32)
|
||||||
else(WIN32) # Unix
|
else(WIN32) # Unix
|
||||||
list(APPEND IMGUI_LIBRARIES GL)
|
list(APPEND IMGUI_LIBRARIES GL)
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
# GLFW
|
# GLFW
|
||||||
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_glfw.cpp)
|
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_glfw.cpp)
|
||||||
find_package(glfw3 REQUIRED)
|
|
||||||
|
set(GLFW_VERSION 3.3.8)
|
||||||
# alternatively, you can build from source.
|
include(FetchContent)
|
||||||
# this tends to be quite the lifesaver on windows.
|
FetchContent_Declare(
|
||||||
# set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
glfw
|
||||||
# set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
URL https://github.com/glfw/glfw/archive/refs/tags/${GLFW_VERSION}.tar.gz)
|
||||||
# set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
||||||
# add_subdirectory(<path_to_glfw_source>)
|
FetchContent_GetProperties(glfw)
|
||||||
|
if (NOT glfw_POPULATED)
|
||||||
# imgui/glfw get confused if not statically built
|
set(FETCHCONTENT_QUIET NO)
|
||||||
# on windows.
|
FetchContent_Populate(glfw)
|
||||||
IF (WIN32)
|
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||||
add_library(cimgui STATIC ${IMGUI_SOURCES})
|
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||||
ELSE()
|
add_subdirectory(${glfw_SOURCE_DIR} ${glfw_BINARY_DIR})
|
||||||
add_library(cimgui SHARED ${IMGUI_SOURCES})
|
endif()
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
target_link_libraries(cimgui ${IMGUI_LIBRARIES} glfw)
|
# glfw/imgui gets confused if it is not statically built.
|
||||||
|
IF (WIN32)
|
||||||
|
add_library(cimgui STATIC ${IMGUI_SOURCES})
|
||||||
# using library
|
ELSE()
|
||||||
include_directories(../../generator/output/)
|
add_library(cimgui SHARED ${IMGUI_SOURCES})
|
||||||
add_executable(${PROJECT_NAME} main.c)
|
ENDIF()
|
||||||
target_compile_definitions(${PROJECT_NAME} PUBLIC -DCIMGUI_USE_OPENGL3 -DCIMGUI_USE_GLFW)
|
|
||||||
if (MINGW)
|
target_link_libraries(cimgui ${IMGUI_LIBRARIES} glfw)
|
||||||
target_link_options(${PROJECT_NAME} PRIVATE "-mconsole")
|
|
||||||
endif()
|
|
||||||
target_link_libraries(${PROJECT_NAME} ${IMGUI_SDL_LIBRARY} cimgui)
|
# using library
|
||||||
|
include_directories(../../generator/output/)
|
||||||
|
add_executable(${PROJECT_NAME} main.c)
|
||||||
|
target_compile_definitions(${PROJECT_NAME} PUBLIC -DCIMGUI_USE_OPENGL3 -DCIMGUI_USE_GLFW)
|
||||||
|
if (MINGW)
|
||||||
|
target_link_options(${PROJECT_NAME} PRIVATE "-mconsole")
|
||||||
|
endif()
|
||||||
|
target_link_libraries(${PROJECT_NAME} ${IMGUI_SDL_LIBRARY} cimgui)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user