diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 35916ad801b4afcb7b33d993d9ef5cf7f9cdd59e..4fcf1d06dc08a915bc4eb823fe663c23dde39436 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,7 @@ # Perhaps relevant in future https://gitlab.com/gitlab-org/gitlab-ce/issues/47063 variables: + GIT_SUBMODULE_STRATEGY: recursive CMAKE_ARGS_WINDOWS: '-DCMAKE_GENERATOR_PLATFORM=x64 -DNVPIPE_DIR="D:/Build/NvPipe" -DEigen3_DIR="C:/Program Files (x86)/Eigen3/share/eigen3/cmake" -DOpenCV_DIR="D:/Build/opencv-4.1.1" -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1"' stages: @@ -50,8 +51,8 @@ webserver-deploy: - 'call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvars64.bat"' - mkdir build - cd build - - echo cmake %CMAKE_ARGS% %CMAKE_ARGS_WINDOWS% .. - - cmake %CMAKE_ARGS% %CMAKE_ARGS_WINDOWS% .. + - echo cmake %CMAKE_ARGS% %CMAKE_ARGS_WINDOWS% -DNANOGUI_DIR="C:/Program Files (x86)/NanoGUI" .. + - cmake %CMAKE_ARGS% %CMAKE_ARGS_WINDOWS% -DNANOGUI_DIR="C:/Program Files (x86)/NanoGUI" .. - devenv ftl.utu.fi.sln /build Release - rmdir /q /s "%DEPLOY_DIR%/%CI_COMMIT_REF_SLUG%" - mkdir "%DEPLOY_DIR%/%CI_COMMIT_REF_SLUG%" diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..1c1bd9b62eff6c8d7f491492b292007d41e6e639 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "ext/nanogui"] + path = ext/nanogui + url = https://github.com/wjakob/nanogui.git diff --git a/CMakeLists.txt b/CMakeLists.txt index e2ab0ac60c61e79b307439211cd37db7ac340d4d..19f41d1b5f19ed2d182e3b415922b741c5cf409b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ option(WITH_FIXSTARS "Use Fixstars libSGM if available" ON) option(BUILD_VISION "Enable the vision component" ON) option(BUILD_RECONSTRUCT "Enable the reconstruction component" ON) option(BUILD_RENDERER "Enable the renderer component" ON) +option(BUILD_GUI "Enable the GUI" ON) option(BUILD_CALIBRATION "Enable the calibration component" OFF) set(THREADS_PREFER_PTHREAD_FLAG ON) @@ -92,14 +93,39 @@ else() set(REALSENSE_LIBRARY "") endif() +if (BUILD_GUI) + #find_library( NANOGUI_LIBRARY NAMES nanogui libnanogui PATHS ${NANOGUI_DIR} PATH_SUFFIXES lib) + #if (NANOGUI_LIBRARY) + # set(HAVE_NANOGUI TRUE) + # add_library(nanogui UNKNOWN IMPORTED) + # #set_property(TARGET nanogui PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${NANOGUI_EXTRA_INCS}) + # set_property(TARGET nanogui PROPERTY IMPORTED_LOCATION ${NANOGUI_LIBRARY}) + # message(STATUS "Found NanoGUI: ${NANOGUI_LIBRARY}") + + # if(WIN32) + # # Find include + # find_path(NANOGUI_INCLUDE_DIRS + # NAMES nanogui/nanogui.h + # PATHS "C:/Program Files/NanoGUI" "C:/Program Files (x86)/NanoGUI" ${NANOGUI_DIR} + # PATH_SUFFIXES include + # ) + # set_property(TARGET nanogui PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${NANOGUI_INCLUDE_DIRS}) + # endif() + #endif() -find_library( NANOGUI_LIBRARY NAMES nanogui libnanogui) -if (NANOGUI_LIBRARY) set(HAVE_NANOGUI TRUE) - add_library(nanogui UNKNOWN IMPORTED) - #set_property(TARGET nanogui PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${NANOGUI_EXTRA_INCS}) - set_property(TARGET nanogui PROPERTY IMPORTED_LOCATION ${NANOGUI_LIBRARY}) - message(STATUS "Found NanoGUI: ${NANOGUI_LIBRARY}") + + # Disable building extras we won't need (pure C++ project) + set(NANOGUI_BUILD_SHARED OFF CACHE BOOL " " FORCE) + set(NANOGUI_BUILD_EXAMPLE OFF CACHE BOOL " " FORCE) + set(NANOGUI_BUILD_PYTHON OFF CACHE BOOL " " FORCE) + set(NANOGUI_INSTALL OFF CACHE BOOL " " FORCE) + + # Add the configurations from nanogui + add_subdirectory(ext/nanogui) + + # For reliability of parallel build, make the NanoGUI targets dependencies + set_property(TARGET glfw glfw_objects nanogui PROPERTY FOLDER "dependencies") endif() find_library( NVPIPE_LIBRARY NAMES NvPipe libNvPipe PATHS ${NVPIPE_DIR} PATH_SUFFIXES lib) diff --git a/applications/gui/CMakeLists.txt b/applications/gui/CMakeLists.txt index 65d7964d5cf891e2b288251a43c4c8936f4199e0..cbb25e837f36e0b8e84175da47094fd6ddf40b28 100644 --- a/applications/gui/CMakeLists.txt +++ b/applications/gui/CMakeLists.txt @@ -20,10 +20,17 @@ if (HAVE_OPENVR) list(APPEND GUISRC "src/vr.cpp") endif() +# Various preprocessor definitions have been generated by NanoGUI +add_definitions(${NANOGUI_EXTRA_DEFS}) + +# On top of adding the path to nanogui/include, you may need extras +include_directories(${NANOGUI_EXTRA_INCS}) + add_executable(ftl-gui ${GUISRC}) target_include_directories(ftl-gui PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/ext/nanogui/include> $<INSTALL_INTERFACE:include> PRIVATE src) @@ -32,6 +39,6 @@ target_include_directories(ftl-gui PUBLIC #endif() #target_include_directories(cv-node PUBLIC ${PROJECT_SOURCE_DIR}/include) -target_link_libraries(ftl-gui ftlcommon ftlctrl ftlrgbd ftlstreams ftlrender Threads::Threads ${OpenCV_LIBS} ${OPENVR_LIBRARIES} glog::glog ftlnet nanogui GL) +target_link_libraries(ftl-gui ftlcommon ftlctrl ftlrgbd ftlstreams ftlrender Threads::Threads ${OpenCV_LIBS} ${OPENVR_LIBRARIES} glog::glog ftlnet nanogui ${NANOGUI_EXTRA_LIBS}) diff --git a/ext/nanogui b/ext/nanogui new file mode 160000 index 0000000000000000000000000000000000000000..e9ec8a1a9861cf578d9c6e85a6420080aa715c03 --- /dev/null +++ b/ext/nanogui @@ -0,0 +1 @@ +Subproject commit e9ec8a1a9861cf578d9c6e85a6420080aa715c03