forked from AcademySoftwareFoundation/MaterialX
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
109 lines (90 loc) · 3.64 KB
/
CMakeLists.txt
File metadata and controls
109 lines (90 loc) · 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
set(CMAKE_CXX_STANDARD 17)
option(MATERIALX_NANOGUI_EXTERNAL "Build aginst an external install of NanoGUI (NANOGUI_ROOT may also need to be set)" OFF)
if (MATERIALX_NANOGUI_EXTERNAL)
find_path(NANOGUI_INCLUDE_DIRS
NAMES
nanogui/nanogui.h
HINTS
"${NANOGUI_ROOT}/include"
"$ENV{NANOGUI_ROOT}/include")
find_library(NANOGUI_LIBRARIES
NAMES
nanogui
HINTS
"${NANOGUI_ROOT}/lib"
"$ENV{NANOGUI_ROOT}/lib"
"${NANOGUI_ROOT}/lib64"
"$ENV{NANOGUI_ROOT}/lib64")
if (NOT NANOGUI_INCLUDE_DIRS OR NOT NANOGUI_LIBRARIES)
message(FATAL_ERROR "Could not find external NanoGUI installation, is NANOGUI_ROOT set?")
endif()
else()
if (NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/NanoGUI/ext/glfw/src")
message(FATAL_ERROR "Building the MaterialX viewer requires the NanoGUI submodule "
"to be present. Update your repository by calling the following:\n"
"git submodule update --init --recursive")
endif()
set(NANOGUI_BACKEND OpenGL CACHE STRING " " FORCE)
set(NANOGUI_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
set(NANOGUI_BUILD_SHARED OFF CACHE BOOL " " FORCE)
set(NANOGUI_BUILD_PYTHON OFF CACHE BOOL " " FORCE)
set(NANOGUI_INSTALL OFF CACHE BOOL " " FORCE)
# Locally disable additional warnings for NanoGUI and its dependencies
set(PREV_CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
set(PREV_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
if(MSVC)
add_compile_options(-wd4389)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wno-deprecated)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
add_compile_options(-Wno-format-truncation -Wno-use-after-free)
endif()
# Disable NanoGUI compiler modifications for Clang
set(PREV_COMPILER_ID CMAKE_CXX_COMPILER_ID)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT APPLE)
set(CMAKE_CXX_COMPILER_ID "None")
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/NanoGUI external/NanoGUI)
set_property(TARGET glfw glfw_objects nanogui PROPERTY FOLDER "External")
set(NANOGUI_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/../;${CMAKE_CURRENT_SOURCE_DIR}/NanoGUI/include")
set(NANOGUI_LIBRARIES "nanogui")
# Restore warnings for MaterialXView
set(CMAKE_C_FLAGS ${PREV_CMAKE_C_FLAGS})
set(CMAKE_CXX_FLAGS ${PREV_CMAKE_CXX_FLAGS})
# Restore compiler ID for MaterialXView
set(CMAKE_CXX_COMPILER_ID PREV_COMPILER_ID)
endif()
file(GLOB materialx_source "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
file(GLOB materialx_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h*")
add_definitions(${NANOGUI_EXTRA_DEFS})
add_executable(MaterialXView ${materialx_source} ${materialx_headers})
set(MATERIALX_LIBRARIES
MaterialXFormat
MaterialXGenGlsl
MaterialXRenderGlsl)
if (MATERIALX_BUILD_GEN_OSL)
LIST(APPEND MATERIALX_LIBRARIES MaterialXGenOsl)
endif()
if (MATERIALX_BUILD_GEN_MDL)
LIST(APPEND MATERIALX_LIBRARIES MaterialXGenMdl)
endif()
target_link_libraries(
MaterialXView
${MATERIALX_LIBRARIES}
${NANOGUI_LIBRARIES}
${NANOGUI_EXTRA_LIBS})
target_include_directories(
MaterialXView
PRIVATE
${NANOGUI_INCLUDE_DIRS}
${NANOGUI_EXTRA_INCS})
if(MATERIALX_BUILD_OIIO AND OPENIMAGEIO_ROOT_DIR)
add_custom_command(TARGET MaterialXView POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${OPENIMAGEIO_ROOT_DIR}/bin ${CMAKE_BINARY_DIR}/bin)
endif()
install(TARGETS MaterialXView
EXPORT MaterialX
RUNTIME DESTINATION bin)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/MaterialXView.pdb"
DESTINATION "bin" OPTIONAL)