147 lines
4.4 KiB
CMake
147 lines
4.4 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
project(ImXui VERSION 0.1.0 LANGUAGES C CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(IMXUI_CORE_SOURCES
|
|
src/Element.cpp
|
|
src/Canvas.cpp
|
|
src/XurParser.cpp
|
|
src/XuiClasses.cpp
|
|
src/XurXml.cpp
|
|
src/Application.cpp
|
|
src/RenderCommands.cpp
|
|
src/XuiControls.cpp
|
|
src/XzpPackage.cpp
|
|
src/XuiXmlWriter.cpp
|
|
src/XurWriter.cpp
|
|
src/Audio.cpp
|
|
src/ImageManager.cpp
|
|
)
|
|
|
|
|
|
if(WIN32)
|
|
list(APPEND IMXUI_CORE_SOURCES src/XuiCompat.cpp src/X360Backend.cpp)
|
|
endif()
|
|
|
|
set(IMXUI_BACKEND_SOURCES
|
|
src/Renderer.cpp
|
|
src/TextureManager.cpp
|
|
src/Skin.cpp
|
|
)
|
|
|
|
|
|
set(IMXUI_HEADERS
|
|
include/ImXui/ImXui.h
|
|
include/ImXui/RenderCommands.h
|
|
include/ImXui/XurFormat.h
|
|
include/ImXui/Renderer.h
|
|
include/ImXui/TextureManager.h
|
|
include/ImXui/Skin.h
|
|
include/ImXui/XurWriter.h
|
|
include/ImXui/XuiXmlWriter.h
|
|
include/ImXui/Audio.h
|
|
)
|
|
|
|
|
|
add_library(ImXuiCore STATIC ${IMXUI_CORE_SOURCES} ${IMXUI_HEADERS})
|
|
target_include_directories(ImXuiCore PUBLIC include compat/include third_party)
|
|
target_include_directories(ImXuiCore PRIVATE src)
|
|
target_include_directories(ImXuiCore PUBLIC include)
|
|
|
|
set(IMXUI_HEADERS ${IMXUI_HEADERS} compat/include/xui.h compat/include/xuiapp.h
|
|
compat/include/xuirender.h compat/include/xuiresource.h)
|
|
|
|
|
|
add_library(ImXuiSoft STATIC
|
|
src/FontEngine.cpp
|
|
src/SoftwareRenderer.cpp
|
|
)
|
|
target_include_directories(ImXuiSoft PUBLIC include)
|
|
target_include_directories(ImXuiSoft PRIVATE src third_party)
|
|
target_link_libraries(ImXuiSoft PUBLIC ImXuiCore)
|
|
|
|
if(NOT WIN32)
|
|
find_package(OpenGL)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
add_library(ImXui STATIC ${IMXUI_BACKEND_SOURCES} ${IMXUI_HEADERS})
|
|
target_include_directories(ImXui PUBLIC include)
|
|
target_include_directories(ImXui PRIVATE src)
|
|
target_link_libraries(ImXui PUBLIC ImXuiCore d3d11.lib dxgi.lib d3dcompiler.lib d2d1.lib dwrite.lib)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
add_executable(NotepadDemo WIN32 examples/NotepadDemo.cpp)
|
|
target_link_libraries(NotepadDemo PRIVATE ImXui comdlg32.lib)
|
|
target_include_directories(NotepadDemo PRIVATE include)
|
|
add_custom_command(TARGET NotepadDemo POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"${CMAKE_SOURCE_DIR}/examples/assets/notepad.xui"
|
|
"$<TARGET_FILE_DIR:NotepadDemo>"
|
|
COMMENT "Copying notepad.xui"
|
|
VERBATIM)
|
|
endif()
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
if(OpenGL_FOUND)
|
|
target_sources(ImXuiSoft PRIVATE src/OpenGLRenderer.cpp)
|
|
target_compile_definitions(ImXuiCore PRIVATE IMXUI_HAS_OPENGL IMXUI_HAS_GLX)
|
|
target_compile_definitions(ImXuiSoft PRIVATE IMXUI_HAS_OPENGL IMXUI_HAS_GLX)
|
|
target_compile_definitions(ImXuiSoft PRIVATE IMXUI_HAS_OPENGL IMXUI_HAS_GLX)
|
|
target_link_libraries(ImXuiSoft PUBLIC OpenGL::GL)
|
|
endif()
|
|
add_executable(NotepadDemo examples/NotepadDemo.cpp)
|
|
target_link_libraries(NotepadDemo PRIVATE ImXuiSoft ImXuiCore X11)
|
|
target_include_directories(NotepadDemo PRIVATE include)
|
|
add_custom_command(TARGET NotepadDemo POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"${CMAKE_SOURCE_DIR}/examples/assets/notepad.xui"
|
|
"$<TARGET_FILE_DIR:NotepadDemo>"
|
|
COMMENT "Copying notepad.xui"
|
|
VERBATIM)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
find_file(D3DCOMPILER_DLL d3dcompiler_46.dll
|
|
PATHS
|
|
"C:/Program Files (x86)/Windows Kits/8.0/Redist/D3D/x86"
|
|
"C:/Program Files (x86)/Windows Kits/8.1/Redist/D3D/x86"
|
|
"C:/Program Files (x86)/Windows Kits/10/Redist/D3D/x86"
|
|
NO_DEFAULT_PATH
|
|
)
|
|
mark_as_advanced(D3DCOMPILER_DLL)
|
|
if(D3DCOMPILER_DLL)
|
|
add_custom_command(TARGET NotepadDemo POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"${D3DCOMPILER_DLL}"
|
|
"$<TARGET_FILE_DIR:NotepadDemo>"
|
|
COMMENT "Copying d3dcompiler_46.dll")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
add_executable(XUITool tools/xuitool.cpp
|
|
third_party/zlib/adler32.c
|
|
third_party/zlib/compress.c
|
|
third_party/zlib/crc32.c
|
|
third_party/zlib/deflate.c
|
|
third_party/zlib/infback.c
|
|
third_party/zlib/inffast.c
|
|
third_party/zlib/inflate.c
|
|
third_party/zlib/inftrees.c
|
|
third_party/zlib/trees.c
|
|
third_party/zlib/uncompr.c
|
|
third_party/zlib/zutil.c
|
|
)
|
|
target_link_libraries(XUITool PRIVATE ImXuiCore)
|
|
target_include_directories(XUITool PRIVATE include third_party/zlib)
|
|
|
|
if(WIN32)
|
|
install(TARGETS ImXui LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
|
|
endif()
|
|
|
|
install(DIRECTORY include/ DESTINATION include)
|