File: FindQGLViewer.cmake

package info (click to toggle)
octomap 1.9.7%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 3,200 kB
  • sloc: cpp: 9,783; sh: 265; python: 71; xml: 65; makefile: 10
file content (126 lines) | stat: -rw-r--r-- 4,683 bytes parent folder | download | duplicates (3)
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Find QGLViewer library
# Looks for a system-wide version of libQGLViewer (qglviewer-qt4 or 5 in Ubuntu).
# If none is found, it builds and uses the local copy in "extern"
#
# Many thanks to L. Ott for assistance!
#
# QGLViewer_INCLUDE_DIR      where to find the include files
# QGLViewer_LIBRARY_DIR      where to find the libraries
# QGLViewer_LIBRARIES        list of libraries to link
# QGLViewer_FOUND            true if QGLViewer was found

SET( QGLViewer_FOUND 0 CACHE BOOL "Do we have QGLViewer?" )

FIND_PATH( QGLVIEWER_BASE_DIR qglviewer.h
  ${CMAKE_SOURCE_DIR}/src/extern/QGLViewer
  ${CMAKE_SOURCE_DIR}/octovis/src/extern/QGLViewer
)

FIND_PATH( QGLViewer_INCLUDE_DIR qglviewer.h
    /usr/include/qglviewer-qt4
    /usr/include/QGLViewer
    /opt/local/include/QGLViewer
    ${QGLVIEWER_BASE_DIR}
)

IF( QT4_FOUND )
    FIND_LIBRARY( QGLViewer_LIBRARY_DIR_UBUNTU NAMES qglviewer-qt4 QGLViewer-qt4)
ELSE()
    FIND_LIBRARY( QGLViewer_LIBRARY_DIR_UBUNTU NAMES qglviewer-qt5 QGLViewer-qt5)
ENDIF()
FIND_LIBRARY( QGLViewer_LIBRARY_DIR_WINDOWS QGLViewer2 ${QGLVIEWER_BASE_DIR})
FIND_LIBRARY( QGLViewer_LIBRARY_DIR_OTHER QGLViewer ${QGLVIEWER_BASE_DIR})

SET( BUILD_LIB_FROM_SOURCE 0)

IF( QGLViewer_INCLUDE_DIR )

  MESSAGE(STATUS "QGLViewer includes found in ${QGLViewer_INCLUDE_DIR}")
  IF (QGLViewer_LIBRARY_DIR_UBUNTU)
    MESSAGE(STATUS "QGLViewer library found in ${QGLViewer_LIBRARY_DIR_UBUNTU}")
    SET( QGLViewer_LIBRARIES ${QGLViewer_LIBRARY_DIR_UBUNTU})
    SET( QGLViewer_FOUND 1 CACHE BOOL "Do we have QGLViewer?" FORCE )
  ELSEIF(QGLViewer_LIBRARY_DIR_WINDOWS)
    MESSAGE(STATUS "QGLViewer2 found in ${QGLViewer_LIBRARY_DIR_WINDOWS}")
    SET( QGLViewer_LIBRARIES ${QGLViewer_LIBRARY_DIR_WINDOWS})
    SET( QGLViewer_FOUND 1 CACHE BOOL "Do we have QGLViewer?" FORCE )
  ELSEIF(QGLViewer_LIBRARY_DIR_OTHER)
    MESSAGE(STATUS "QGLViewer found in ${QGLViewer_LIBRARY_DIR_OTHER}")
    SET( QGLViewer_LIBRARIES ${QGLViewer_LIBRARY_DIR_OTHER})
    SET( QGLViewer_FOUND 1 CACHE BOOL "Do we have QGLViewer?" FORCE )
  ELSE()
    MESSAGE(STATUS "QGLViewer library not found.")
    SET( BUILD_LIB_FROM_SOURCE 1)
    SET( QGLViewer_FOUND 0 CACHE BOOL "Do we have QGLViewer?" FORCE )
  ENDIF()    

ELSE()
  SET( BUILD_LIB_FROM_SOURCE 1)
ENDIF()

# build own libQGLViewer
IF(BUILD_LIB_FROM_SOURCE)
  
  IF (WIN32)
    MESSAGE("Cannot generate QGLViewer2 from source automatically.")
    MESSAGE("Please build libQGLViewer from source, instructions to do so")
    MESSAGE("can be found in octovis/README.txt")
    MESSAGE("Please rerun CMAKE when you are ready.")
    
  ELSE (WIN32)
    IF(QGLVIEWER_BASE_DIR)
      MESSAGE(STATUS "Trying to build libQGLViewer from source in ${QGLVIEWER_BASE_DIR}")
      
      FIND_PROGRAM(QMAKE-QT4 qmake-qt4)
      IF (QMAKE-QT4)
	MESSAGE(STATUS "\t generating Makefile using qmake-qt4") 
	EXECUTE_PROCESS(
	  WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR}
	  COMMAND qmake-qt4
	  OUTPUT_QUIET
	  )
      ELSE(QMAKE-QT4)
	MESSAGE(STATUS "\t generating Makefile using qmake") 
	EXECUTE_PROCESS(
	  WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR}
	  COMMAND qmake
	  OUTPUT_QUIET
	  )
      ENDIF(QMAKE-QT4)
      
      MESSAGE(STATUS "\t building library (this may take some time...)")
      EXECUTE_PROCESS(
	WORKING_DIRECTORY ${QGLVIEWER_BASE_DIR}
	COMMAND make
	OUTPUT_QUIET
	)
    ENDIF(QGLVIEWER_BASE_DIR)
  ENDIF(WIN32)
  
ELSE(BUILD_LIB_FROM_SOURCE)
  IF (NOT QGLViewer_FOUND)
    MESSAGE(STATUS "QGLViewer sources NOT found. Exiting.")
  ENDIF ()
ENDIF(BUILD_LIB_FROM_SOURCE)

# verify that QGLViewer lib was build if we didnt find it elsewhere
IF (NOT QGLViewer_FOUND)
  #FIND_LIBRARY(QGLViewer_LIBRARY_DIR_OTHER QGLViewer ${QGLVIEWER_BASE_DIR})
  FIND_PATH(QGLLIB libQGLViewer.so ${QGLVIEWER_BASE_DIR})
  IF (NOT QGLLIB)
    MESSAGE(WARNING "Could not find libQGLViewer.so, failed to build?")
    SET( QGLViewer_FOUND 0 CACHE BOOL "Do we have QGLViewer?" FORCE )
  ELSE()
    MESSAGE(STATUS "Successfully built library in:\n${QGLLIB}")
    SET( QGLViewer_INCLUDE_DIR ${QGLVIEWER_BASE_DIR} CACHE PATH "QGLViewer Include directory" FORCE)
    SET( QGLViewer_LIBRARY_DIR ${QGLVIEWER_BASE_DIR} CACHE PATH "QGLViewer Library directory" FORCE)
    #  TODO: also include "m pthread  QGLViewerGen QGLViewerUtility"?
    SET( QGLViewer_LIBRARIES QGLViewer)
    SET( QGLViewer_FOUND 1 CACHE BOOL "Do we have QGLViewer?" FORCE )
  ENDIF()
ENDIF()

# You need to use qmake of QT4. You are using QT3 if you get:

#CMakeFiles/octovis.dir/ViewerWidget.cpp.o: In function `octomap::ViewerWidget::ViewerWidget(QWidget*)':
#ViewerWidget.cpp:(.text+0x1715): undefined reference to `QGLViewer::QGLViewer(QWidget*, QGLWidget const*, QFlags<Qt::WindowType>)'