assimp/contrib/tinyusdz/tinyusdz_repo/examples/openglviewer/CMakeLists.txt

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