CMakeLists.txt 5.27 KB
Newer Older
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 127 128
#
#  CMake file for OpenCV docs
#

file(GLOB FILES_DOC *.htm *.txt *.jpg *.png *.pdf)
file(GLOB FILES_DOC_PAPERS papers/*.pdf papers/*.ps)
file(GLOB FILES_DOC_VS vidsurv/*.doc)
file(GLOB FILES_TEX *.tex *.sty *.bib go)
file(GLOB FILES_TEX_PICS pics/*.png pics/*.jpg)
file(GLOB_RECURSE FILES_PLASTEX plastex/*)

if(BUILD_LATEX_DOCS AND PDFLATEX_COMPILER)
        
project(opencv_refman)

set(refman_copied_srcs)

#foreach(f ${refman_m4_srcs})
#    get_filename_component(basef ${f} NAME_WE)
#    set(outputf ${CMAKE_CURRENT_BINARY_DIR}/${basef}-c.tex)
#    add_custom_command(
#        OUTPUT ${outputf}
#        DEPENDS ${f}
#        COMMAND m4
#        ARGS -DTARGET_LANGUAGE=c ${f} > ${outputf}
#        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
#        VERBATIM
#        )
#    list(APPEND refman_copied_srcs ${outputf})
#endforeach()

foreach(f ${FILES_TEX})
    get_filename_component(basef ${f} NAME)
    set(outputf ${CMAKE_CURRENT_BINARY_DIR}/${basef})
    add_custom_command(
        OUTPUT ${outputf}
        DEPENDS ${f}
        COMMAND ${CMAKE_COMMAND}
        ARGS -E copy ${f} ${outputf}
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
    list(APPEND refman_copied_srcs ${outputf})
endforeach()

set(pdflatex_args -interaction=batchmode
"\"\\newcommand{\\genc}{true}\\newcommand{\\genpy}{true}\\newcommand{\\targetlang}{c}\\input{opencv.tex}\"")

add_custom_command(
  OUTPUT    ${CMAKE_CURRENT_BINARY_DIR}/opencv.aux
  DEPENDS   ${refman_copied_srcs}
  COMMAND   ${PDFLATEX_COMPILER}
  ARGS      ${pdflatex_args}
  COMMENT   "Latex (first pass)"
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  )

add_custom_command(
  OUTPUT    ${CMAKE_CURRENT_BINARY_DIR}/opencv.bbl
  DEPENDS   ${CMAKE_CURRENT_BINARY_DIR}/opencv.aux
  COMMAND   ${BIBTEX_COMPILER}
  ARGS      ${CMAKE_CURRENT_BINARY_DIR}/opencv
  COMMENT   "Bibtex"
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  )

add_custom_command(
  OUTPUT    ${CMAKE_CURRENT_BINARY_DIR}/opencv.pdf
  DEPENDS   ${CMAKE_CURRENT_BINARY_DIR}/opencv.bbl
  COMMAND   ${PDFLATEX_COMPILER}
  ARGS      ${pdflatex_args}
  COMMENT   "Latex (second pass)"
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  )

add_custom_command(
  OUTPUT    ${CMAKE_CURRENT_BINARY_DIR}/opencv.log
  DEPENDS   ${CMAKE_CURRENT_BINARY_DIR}/opencv.bbl
            ${CMAKE_CURRENT_BINARY_DIR}/opencv.pdf
  COMMAND   ${PDFLATEX_COMPILER}
  ARGS      ${pdflatex_args}
  COMMENT   "Latex (third pass)"
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  )

set(PICS_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/pics")
message(STATUS "Copying pictures to the build directory")
make_directory(${PICS_OUT_DIR})

file(GLOB pics RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/pics" pics/*.jpg pics/*.png)

foreach(p ${pics})
    configure_file(
           "pics/${p}"
           "${PICS_OUT_DIR}/${p}"
           COPYONLY)
endforeach()

set(PYTHON_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/python_fragments")
message(STATUS "Copying python_fragments to the build directory")
make_directory(${PYTHON_OUT_DIR})

file(GLOB python_fragments RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/python_fragments" python_fragments/*.py)

foreach(p ${python_fragments})
    configure_file(
           "python_fragments/${p}"
           "${PYTHON_OUT_DIR}/${p}"
           COPYONLY)
endforeach()

#add_custom_target(MakePicsLink
#   COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/pics ${CMAKE_CURRENT_BINARY_DIR}/pics
#   )
  
# Eventually trigger the whole process
add_custom_target(ReferenceManual ALL echo
   DEPENDS   ${CMAKE_CURRENT_BINARY_DIR}/opencv.log
   )

#add_dependencies(ReferenceManual MakePicsLink)

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/opencv.pdf"
        DESTINATION "${OPENCV_DOC_INSTALL_PATH}" COMPONENT main)
        
endif() # BUILD_LATEX_DOCS AND PDFLATEX_COMPILER
        
install(FILES ${FILES_DOC} DESTINATION "${OPENCV_DOC_INSTALL_PATH}" COMPONENT main)
install(FILES ${FILES_DOC_PAPERS} DESTINATION "${OPENCV_DOC_INSTALL_PATH}/papers" COMPONENT main)
install(FILES ${FILES_DOC_VS} DESTINATION "${OPENCV_DOC_INSTALL_PATH}/vidsurv" COMPONENT main)
129 130 131 132 133 134 135 136 137 138

########################################### Doxygen Docs #########################################

if(BUILD_DOXYGEN_DOCS AND DOXYGEN_FOUND)

set(DOXYGEN_LANGUAGE "English" CACHE STRING "Language used by doxygen")
mark_as_advanced(DOXYGEN_LANGUAGE)

set(CMAKE_DOXYGEN_IMAGE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/pics")

139
set(module_names core imgproc calib3d features2d objdetect video highgui ml legacy contrib)
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
set(DOXYGEN_SOURCE_DIR)
set(doxy_html_dep_list)

foreach(m ${module_names})
    set(module_hdr_path "${CMAKE_SOURCE_DIR}/modules/${m}/include/opencv2/${m}")
    set(DOXYGEN_SOURCE_DIR ${DOXYGEN_SOURCE_DIR} ${module_hdr_path})
    file(GLOB module_hdrs "${module_hdr_path}/*.h*")
    set(doxy_html_dep_list ${doxy_html_dep_list} ${module_hdrs})
endforeach()

set(DOXYGEN_OUTPUT_DIR html)
string(REGEX REPLACE ";" " " CMAKE_DOXYGEN_INPUT_LIST "${DOXYGEN_SOURCE_DIR}")

configure_file(Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
set(HTML_TARGET "DOXY_HTML" )

add_custom_target(${HTML_TARGET} ALL
	${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
	DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ${doxy_html_dep_list})
159
exec_program(mkdir ARGS "-p \"${CMAKE_CURRENT_BINARY_DIR}/html/\"")
160
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html" DESTINATION "${OPENCV_DOC_INSTALL_PATH}/html" COMPONENT main)
161 162 163

endif()