Subversion Repositories seema-scanner

Rev

Rev 2 | Rev 7 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#------------------------------------------------------------
#
# SMScanner
#
# Control Interface and point cloud construction interface
# for the SeeMa Lab Structured Light Scanner.
#
# Image Analysis and Computer Graphics, DTU, 2014
#
#------------------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = SMScanner
TEMPLATE = app

HEADERS  += SMScanner.h \
        SMVideoWidget.h \
        SMPointCloudWidget.h \
        camera/Camera.h \
        projector/Projector.h \
        projector/OpenGLContext.h \
        codec/Codec.h \
        codec/CodecGrayCode.h \
        codec/CodecPhaseShift2x3.h \
        triangulator/Triangulator.h \
        cvtools.h \
        SMCalibrationParams.h \
        SMCaptureWorker.h \
        SMTriangulationWorker.h \
        SMPreferenceDialog.h

SOURCES += main.cpp\
        SMScanner.cpp \
        SMVideoWidget.cpp \
        SMPointCloudWidget.cpp \
        camera/Camera.cpp \
        codec/CodecGrayCode.cpp \
        codec/CodecPhaseShift2x3.cpp \
        triangulator/Triangulator.cpp \
        cvtools.cpp \
        SMCalibrationParams.cpp \
        SMCaptureWorker.cpp \
        SMTriangulationWorker.cpp \
        SMPreferenceDialog.cpp


FORMS    += SMScanner.ui \
    SMAboutDialog.ui \
        SMPreferenceDialog.ui

INCLUDEPATH += camera/ projector/ codec/ triangulator/


# Operating System dependant linking and including
# Linux
unix:!macx {
    CONFIG += link_pkgconfig
    # Link VTK and Boost (no pkg-config)
    INCLUDEPATH += /usr/include/vtk-5.8/
    LIBS += -lQVTK -lvtkCommon -lvtkFiltering -lvtkRendering -lvtkIO -lvtkGraphics
    # PCL pkg-config workaround
    LIBS += -lboost_system -lpcl_visualization -lpcl_common -lpcl_io -lpcl_search -lpcl_surface
    # PKG-config libs
    INCLUDEPATH += /usr/local/include/pcl-1.7 /usr/include/eigen3/
    PKGCONFIG += gl glu x11 xrandr opencv pcl_registration-1.7 pcl_visualization-1.7 pcl_surface-1.7 pcl_search-1.7 pcl_filters-1.7 pcl_kdtree-1.7 pcl_tracking-1.7 flann eigen3
}
# Windows
win32 {
    # Boost join
    DEFINES += DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED

    # opencv
    INCLUDEPATH += "$$(OPENCV_INCLUDE_DIR)/" #C:\opencv\build\include

    CONFIG(debug,debug|release){
    #debug
    LIBS += -L"$$(OPENCV_DIR)" \ #C:\opencv\build\x64\vc10\lib
            -lopencv_core247d \
            -lopencv_highgui247d \
            -lopencv_imgproc247d \
            -lopencv_calib3d247d
    } else {
    #release
    LIBS += -L"$$(OPENCV_DIR)" \
            -lopencv_core247 \
            -lopencv_highgui247 \
            -lopencv_imgproc247 \
            -lopencv_calib3d247
    }

    # pcl
    INCLUDEPATH += "$$(PCL_INCLUDE_DIR)/" #C:\Program Files\PCL\include\pcl-1.7

    CONFIG(debug,debug|release){
    #debug
    LIBS += -L"$$(PCL_DIR)" \ #C:\Program Files\PCL\lib
            -lpcl_visualization_debug \
            -lpcl_io_debug \
            -lpcl_common_debug \
            -lpcl_features_debug \
            -lpcl_filters_debug \
            -lpcl_io_debug \
            -lpcl_io_ply_debug \
            -lpcl_kdtree_debug \
            -lpcl_keypoints_debug \
            -lpcl_octree_debug \
            -lpcl_registration_debug \
            -lpcl_sample_consensus_debug \
            -lpcl_search_debug \
            -lpcl_segmentation_debug \
            -lpcl_surface_debug \
            -lpcl_tracking_debug \
            -lpcl_visualization_debug
    } else {
    # release
    LIBS += -L"$$(PCL_DIR)" \
            -lpcl_visualization_release \
            -lpcl_io_release \
            -lpcl_common_release \
            -lpcl_features_release \
            -lpcl_filters_release \
            -lpcl_io_release \
            -lpcl_io_ply_release \
            -lpcl_kdtree_release \
            -lpcl_keypoints_release \
            -lpcl_octree_release \
            -lpcl_registration_release \
            -lpcl_sample_consensus_release \
            -lpcl_search_release \
            -lpcl_segmentation_release \
            -lpcl_surface_release \
            -lpcl_tracking_release \
            -lpcl_visualization_release
    }

    # pcl dependencies
    INCLUDEPATH += "$$(BOOST_ROOT)/include" \
                   "$$(EIGEN_ROOT)/include" \
                   "$$(FLANN_ROOT)/include"
    LIBS += -L"$$(BOOST_ROOT)/lib" -lboost_system-vc100-mt-1_50 -lboost_system-vc100-mt-gd-1_50

    # vtk
    INCLUDEPATH += "$$(VTK_INCLUDE_DIR)" #C:\Program Files\VTK\include\vtk-5.10

    CONFIG(debug,debug|release){
    #debug
    LIBS += -L"$$(VTK_DIR)" \ #C:\Program Files\VTK\lib\vtk-5.10
            -lvtkGraphics-gd \
            -lQVTK-gd \
            -lvtkCommon-gd \
            -lvtkFiltering-gd \
            -lvtkRendering-gd \
            -lvtkIO-gd \
            -lvtkpng-gd \
            -lvtksys-gd \
            -lvtktiff-gd \
            -lvtkjpeg-gd \
            -lvtkexpat-gd \
            -lvtkzlib-gd
    } else {
    # release
    LIBS += -L"$$(VTK_DIR)" \
            -lvtkGraphics \
            -lQVTK \
            -lvtkCommon \
            -lvtkFiltering \
            -lvtkRendering \
            -lvtkIO \
            -lvtkpng \
            -lvtksys \
            -lvtktiff \
            -lvtkjpeg \
            -lvtkexpat \
            -lvtkzlib
    }

}
# Mac OS X
macx {
    INCLUDEPATH += /opt/local/include/vtk-5.10/
    LIBS += -L/opt/local/lib/vtk-5.10/ -lQVTK -lvtkCommon -lvtkFiltering -lvtkRendering -lvtkIO -lvtkGraphics
    LIBS += -L/opt/local/lib/ -lboost_system-mt
    CONFIG += link_pkgconfig
    PKGCONFIG += opencv pcl_visualization-1.7 pcl_filters-1.7 pcl_search-1.7 pcl_registration-1.7
    DEFINES += BOOST_TT_HAS_OPERATOR_HPP_INCLUDED
}


# Compile with system dependent OpenGL Context code
unix:!macx{
    SOURCES += projector/OpenGLContext.Unix.cpp
    LIBS += -lXxf86vm
}
win32{
    SOURCES += projector/OpenGLContext.Win.cpp
}
macx{
    CONFIG += objective_c
    OBJECTIVE_SOURCES += projector/OpenGLContext.Mac.mm
    LIBS += -framework Cocoa -framework OpenGL
#    SOURCES += projector/OpenGLContext.GLFW.cpp
#    LIBS += -L/usr/local/lib/ -lglfw3
}


# Compile with specific camera driver bindings
# libdc1394
unix:!macx:exists(/usr/include/dc1394/dc1394.h) {
    DEFINES += WITH_CAMERAIIDC
    LIBS += -ldc1394
}
macx:exists(/usr/local/include/dc1394/dc1394.h) {
    DEFINES += WITH_CAMERAIIDC
    LIBS += -ldc1394
}
contains(DEFINES, WITH_CAMERAIIDC) {
    HEADERS += camera/CameraIIDC.h
    SOURCES += camera/CameraIIDC.cpp
}
# IDS Imaging libueye
unix:!macx:exists(/usr/include/ueye.h) {
    DEFINES += WITH_CAMERAIDSIMAGING
    LIBS += -lueye_api
}
win32:exists("C:/Program Files/IDS/uEye/Develop/include/uEye.h"){
    DEFINES += WITH_CAMERAIDSIMAGING
    INCLUDEPATH += "C:/Program Files/IDS/uEye/Develop/include/"
    LIBS += -L"C:/Program Files/IDS/uEye/Develop/Lib" -luEye_api_64
}
contains(DEFINES, WITH_CAMERAIDSIMAGING) {
    HEADERS += camera/CameraIDSImaging.h
    SOURCES += camera/CameraIDSImaging.cpp
}
# XIMEA libm3api
unix:!macx:exists(/opt/XIMEA/include/xiApi.h){
    INCLUDEPATH += /opt/XIMEA/include
    DEFINES += WITH_CAMERAXIMEA
    LIBS += -lm3api
}
win32:exists("C:/XIMEA/API/xiApi.h"){
    DEFINES += WITH_CAMERAXIMEA
    INCLUDEPATH += "C:/XIMEA/API"
    LIBS += -L"C:/XIMEA/API/x64" -lm3apiX64
}
macx:exists(/Library/Frameworks/m3api.framework/m3api){
    DEFINES += WITH_CAMERAXIMEA
    INCLUDEPATH += /Library/Frameworks/m3api.framework/Headers/
    LIBS += -framework m3api
}
contains(DEFINES, WITH_CAMERAXIMEA) {
    HEADERS += camera/CameraXIMEA.h
    SOURCES += camera/CameraXIMEA.cpp
}
# Point Grey flycapture
unix:!macx:exists(/usr/include/flycapture/FlyCapture2.h){
    INCLUDEPATH += /usr/include/flycapture
    DEFINES += WITH_CAMERAPOINTGREY
    LIBS += -lflycapture
}
win32:exists("C:/Program Files/Point Grey Research/FlyCapture2/include/FlyCapture2.h"){
    DEFINES += WITH_CAMERAPOINTGREY
    INCLUDEPATH += "C:/Program Files/Point Grey Research/FlyCapture2/include/"
    LIBS += -L"C:/Program Files/Point Grey Research/FlyCapture2/lib64" -lFlyCapture2
}
contains(DEFINES, WITH_CAMERAPOINTGREY) {
    HEADERS += camera/CameraPointGrey.h
    SOURCES += camera/CameraPointGrey.cpp
}


# Compile with direct projector APIs
# LC3000 Api
DEFINES += WITH_LC3000API
HEADERS += projector/LC3000API/lcr_cmd.h
SOURCES += projector/ProjectorLC3000.cpp \
        projector/LC3000API/lcr_cmd.cpp \
        projector/LC3000API/lcr_packetizer.cpp \
        projector/LC3000API/tcp_client.cpp

## LC4500 Api
DEFINES += WITH_LC4500API
HEADERS += projector/LC4500API/API.h
SOURCES += projector/ProjectorLC4500.cpp \
        projector/LC4500API/API.cpp \
        projector/LC4500API/usb.cpp
macx:SOURCES += projector/LC4500API/hid.Mac.c
unix:!macx{
    SOURCES += projector/LC4500API/hid.Unix.c
    CONFIG += link_pkgconfig
    PKGCONFIG += libudev
}
win32{
    SOURCES += projector/LC4500API/hid.Win.c
    LIBS += -lsetupapi
}