104 lines
2.8 KiB
CMake
104 lines
2.8 KiB
CMake
|
# Assume this project is a root project
|
||
|
cmake_minimum_required(VERSION 3.16)
|
||
|
|
||
|
set(BUILD_TARGET "usdz_glview")
|
||
|
|
||
|
project(${BUILD_TARGET} CXX C)
|
||
|
|
||
|
set(CMAKE_CXX_STANDARD 14)
|
||
|
set(CMAKE_CXX_STANDARD_REQUIRED On)
|
||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||
|
|
||
|
set(OpenGL_GL_PREFERENCE GLVND) # CMP0072
|
||
|
find_package(OpenGL REQUIRED)
|
||
|
|
||
|
if(WIN32)
|
||
|
# nothing.
|
||
|
elseif(APPLE)
|
||
|
find_library(COCOA Cocoa REQUIRED)
|
||
|
else()
|
||
|
find_package(X11 REQUIRED)
|
||
|
endif()
|
||
|
|
||
|
set(SOURCES
|
||
|
main.cc
|
||
|
shader.hh
|
||
|
shader.cc
|
||
|
#render.cc
|
||
|
#render-config.cc
|
||
|
|
||
|
)
|
||
|
|
||
|
get_filename_component(TINYUSDZ_ABS_PATH "${PROJECT_SOURCE_DIR}/../../" ABSOLUTE)
|
||
|
get_filename_component(EXAMPLE_COMMON_ABS_PATH "${PROJECT_SOURCE_DIR}/../common/" ABSOLUTE)
|
||
|
|
||
|
|
||
|
# TinyUSDZ root
|
||
|
add_subdirectory(${TINYUSDZ_ABS_PATH} tinyusdz)
|
||
|
|
||
|
|
||
|
set(GUI_SOURCES
|
||
|
${PROJECT_SOURCE_DIR}/../common/trackball.cc
|
||
|
${PROJECT_SOURCE_DIR}/../common/matrix.cc
|
||
|
${PROJECT_SOURCE_DIR}/../common/imgui/imgui.cpp
|
||
|
${PROJECT_SOURCE_DIR}/../common/imgui/imgui_draw.cpp
|
||
|
${PROJECT_SOURCE_DIR}/../common/imgui/imgui_tables.cpp
|
||
|
${PROJECT_SOURCE_DIR}/../common/imgui/imgui_widgets.cpp
|
||
|
${PROJECT_SOURCE_DIR}/../common/imgui/imgui_impl_glfw.cpp
|
||
|
${PROJECT_SOURCE_DIR}/../common/imgui/imgui_impl_opengl3.cpp
|
||
|
${PROJECT_SOURCE_DIR}/../common/glad/include/glad/glad.h
|
||
|
${PROJECT_SOURCE_DIR}/../common/glad/src/glad.c
|
||
|
)
|
||
|
|
||
|
# local [glfw3]
|
||
|
set(GLFW_BUILD_EXAMPLES OFF CACHE INTERNAL "" FORCE)
|
||
|
set(GLFW_BUILD_TESTS OFF CACHE INTERNAL "" FORCE)
|
||
|
set(GLFW_BUILD_DOCS OFF CACHE INTERNAL "" FORCE)
|
||
|
set(GLFW_INSTALL OFF CACHE INTERNAL "" FORCE)
|
||
|
#option(GLFW_VULKAN_STATIC "Assume the Vulkan loader is linked with the application" OFF)
|
||
|
add_subdirectory("${EXAMPLE_COMMON_ABS_PATH}/glfw-3.3.6" glfw-3.3.6 EXCLUDE_FROM_ALL)
|
||
|
|
||
|
add_executable(${BUILD_TARGET} ${SOURCES} ${GUI_SOURCES})
|
||
|
|
||
|
# Assume add_sanitizer() is imported in TinyUSDZ's CMakeList.txt
|
||
|
add_sanitizers(${BUILD_TARGET})
|
||
|
|
||
|
# local glad
|
||
|
target_include_directories(${BUILD_TARGET} PUBLIC "${EXAMPLE_COMMON_ABS_PATH}/glad/include")
|
||
|
|
||
|
target_include_directories(${BUILD_TARGET} PUBLIC ${OPENGL_INCLUDE_DIR})
|
||
|
|
||
|
if (UNIX)
|
||
|
target_include_directories(${BUILD_TARGET} PUBLIC ${X11_INCLUDE_DIR})
|
||
|
endif()
|
||
|
|
||
|
target_include_directories(${BUILD_TARGET} PUBLIC "${EXAMPLE_COMMON_ABS_PATH}")
|
||
|
target_include_directories(${BUILD_TARGET} PUBLIC "${EXAMPLE_COMMON_ABS_PATH}/imgui")
|
||
|
|
||
|
# tinyusdz dir
|
||
|
target_include_directories(${BUILD_TARGET} PUBLIC "${TINYUSDZ_ABS_PATH}/src/")
|
||
|
|
||
|
target_link_libraries(
|
||
|
${BUILD_TARGET}
|
||
|
${OPENGL_LIBRARIES}
|
||
|
glfw
|
||
|
tinyusdz::tinyusdz_static
|
||
|
${CMAKE_DL_LIBS}
|
||
|
)
|
||
|
|
||
|
if(WIN32)
|
||
|
# nothing.
|
||
|
elseif(APPLE)
|
||
|
target_link_libraries(
|
||
|
${BUILD_TARGET}
|
||
|
${COCOA}
|
||
|
)
|
||
|
else()
|
||
|
target_link_libraries(
|
||
|
${BUILD_TARGET}
|
||
|
${X11_LIBRARIES}
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
source_group("Source Files" FILES ${SOURCES})
|