Added more detailed CMake documentation.
- Also added better FindSphinx support so that we can detect the version and not have a fatal error if it's too old. - Added support for building latex documentation with -DBUILD_LATEX. Off by default. - Added suppor for building man pages with -DBUILD_MAN. On by default (unless sphins is too old to support it).
This commit is contained in:
parent
3000831365
commit
8390c90a91
110
CMakeLists.txt
110
CMakeLists.txt
@ -263,45 +263,88 @@ install (FILES
|
|||||||
DESTINATION include)
|
DESTINATION include)
|
||||||
|
|
||||||
# For building Documentation (uses Sphinx)
|
# For building Documentation (uses Sphinx)
|
||||||
OPTION (BUILD_DOCS "Build documentation (uses python-sphinx)." OFF)
|
OPTION (BUILD_DOCS "Build documentation (uses python-sphinx)." ON)
|
||||||
if (BUILD_DOCS)
|
if (BUILD_DOCS)
|
||||||
find_package(Sphinx REQUIRED)
|
find_package(Sphinx)
|
||||||
|
|
||||||
# configured documentation tools and intermediate build results
|
if (NOT SPHINX_FOUND)
|
||||||
set(BINARY_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/_build")
|
message(WARNING "Sphinx not found. Cannot generate documentation!")
|
||||||
|
else()
|
||||||
|
if (Sphinx_VERSION_STRING VERSION_LESS 1.0)
|
||||||
|
message(WARNING "Your Sphinx version is too old!
|
||||||
|
This project requires Sphinx v1.0 or above to produce
|
||||||
|
proper documentation (you have v${Sphinx_VERSION_STRING}).
|
||||||
|
You will get output but it will have errors.")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Sphinx cache with pickled ReST documents
|
# configured documentation tools and intermediate build results
|
||||||
set(SPHINX_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees")
|
set(BINARY_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/_build")
|
||||||
|
|
||||||
# HTML output directory
|
# Sphinx cache with pickled ReST documents
|
||||||
set(SPHINX_HTML_DIR "${CMAKE_CURRENT_BINARY_DIR}/html")
|
set(SPHINX_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees")
|
||||||
|
|
||||||
# CMake could be used to build the conf.py file too,
|
# CMake could be used to build the conf.py file too,
|
||||||
# eg it could automatically write the version of the program or change the theme.
|
# eg it could automatically write the version of the program or change the theme.
|
||||||
# if(NOT DEFINED SPHINX_THEME)
|
# if(NOT DEFINED SPHINX_THEME)
|
||||||
# set(SPHINX_THEME default)
|
# set(SPHINX_THEME default)
|
||||||
# endif()
|
# endif()
|
||||||
#
|
#
|
||||||
# if(NOT DEFINED SPHINX_THEME_DIR)
|
# if(NOT DEFINED SPHINX_THEME_DIR)
|
||||||
# set(SPHINX_THEME_DIR)
|
# set(SPHINX_THEME_DIR)
|
||||||
# endif()
|
# endif()
|
||||||
#
|
#
|
||||||
# configure_file(
|
# configure_file(
|
||||||
# "${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in"
|
# "${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in"
|
||||||
# "${BINARY_BUILD_DIR}/conf.py"
|
# "${BINARY_BUILD_DIR}/conf.py"
|
||||||
# @ONLY)
|
# @ONLY)
|
||||||
|
|
||||||
add_custom_target(jansson_docs ALL
|
# TODO: Add support for all sphinx builders: http://sphinx-doc.org/builders.html
|
||||||
${SPHINX_EXECUTABLE}
|
|
||||||
# -q # Enable for quiet mode
|
|
||||||
-b html
|
|
||||||
-d "${SPHINX_CACHE_DIR}"
|
|
||||||
# -c "${BINARY_BUILD_DIR}" # enable if using cmake-generated conf.py
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/doc"
|
|
||||||
"${SPHINX_HTML_DIR}"
|
|
||||||
COMMENT "Building HTML documentation with Sphinx")
|
|
||||||
|
|
||||||
message (STATUS "Documentation has been built in ${SPHINX_HTML_DIR}")
|
# Add documentation targets.
|
||||||
|
set(DOC_TARGETS html)
|
||||||
|
|
||||||
|
OPTION(BUILD_MAN "Create a target for building man pages." ON)
|
||||||
|
|
||||||
|
if (BUILD_MAN)
|
||||||
|
if (Sphinx_VERSION_STRING VERSION_LESS 1.0)
|
||||||
|
message(WARNING "Sphinx version 1.0 > is required to build man pages. You have v${Sphinx_VERSION_STRING}.")
|
||||||
|
else()
|
||||||
|
list(APPEND DOC_TARGETS man)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
OPTION(BUILD_LATEX "Create a target for building latex docs (to create PDF)." OFF)
|
||||||
|
|
||||||
|
if (BUILD_LATEX)
|
||||||
|
find_package(LATEX)
|
||||||
|
|
||||||
|
if (NOT LATEX_COMPILER)
|
||||||
|
message("Couldn't find Latex, can't build latex docs using Sphinx")
|
||||||
|
else()
|
||||||
|
message("Latex found! If you have problems building, see Sphinx documentation for required Latex packages.")
|
||||||
|
list(APPEND DOC_TARGETS latex)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# The doc target will build all documentation targets.
|
||||||
|
add_custom_target(doc)
|
||||||
|
|
||||||
|
foreach (DOC_TARGET ${DOC_TARGETS})
|
||||||
|
add_custom_target(${DOC_TARGET}
|
||||||
|
${SPHINX_EXECUTABLE}
|
||||||
|
# -q # Enable for quiet mode
|
||||||
|
-b ${DOC_TARGET}
|
||||||
|
-d "${SPHINX_CACHE_DIR}"
|
||||||
|
# -c "${BINARY_BUILD_DIR}" # enable if using cmake-generated conf.py
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/doc"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/doc/${DOC_TARGET}"
|
||||||
|
COMMENT "Building ${DOC_TARGET} documentation with Sphinx")
|
||||||
|
|
||||||
|
add_dependencies(doc ${DOC_TARGET})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
message("Building documentation enabled for: ${DOC_TARGETS}")
|
||||||
|
endif()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
@ -388,5 +431,8 @@ if (NOT WITHOUT_TESTS)
|
|||||||
endif ()
|
endif ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
|
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
|
||||||
|
DEPENDS json_process ${api_tests})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
@ -1,16 +1,337 @@
|
|||||||
find_program(SPHINX_EXECUTABLE NAMES sphinx-build
|
#find_program(SPHINX_EXECUTABLE NAMES sphinx-build
|
||||||
HINTS
|
# HINTS
|
||||||
$ENV{SPHINX_DIR}
|
# $ENV{SPHINX_DIR}
|
||||||
PATH_SUFFIXES bin
|
# PATH_SUFFIXES bin
|
||||||
DOC "Sphinx documentation generator"
|
# DOC "Sphinx documentation generator"
|
||||||
|
#)
|
||||||
|
#
|
||||||
|
#include(FindPackageHandleStandardArgs)
|
||||||
|
#
|
||||||
|
## Get the version.
|
||||||
|
#execute_process(
|
||||||
|
# COMMAND "${SPHINX_EXECUTABLE} -h"
|
||||||
|
# OUTPUT_VARIABLE _SPHINX_VERSION_STRING
|
||||||
|
# ERROR_VARIABLE _SPHINX_VERSION_STRING)
|
||||||
|
#
|
||||||
|
#message("Sp ${_SPHINX_VERSION_STRING}")
|
||||||
|
#if (_SPHINX_VERSION_STRING MATCHES "Sphinx v([0-9]+\\.[0-9]+\\.[0-9]+)")
|
||||||
|
# set(SPHINX_VERSION_STRING "${CMAKE_MATCH_1}")
|
||||||
|
# string (REPLACE "." ";" _SPHINX_VERSION "${SPHINX_VERSION_STRING}")
|
||||||
|
# list(GET _SPHINX_VERSION 0 SPHINX_VERSION_MAJOR)
|
||||||
|
# list(GET _SPHINX_VERSION 1 SPHINX_VERSION_MINOR)
|
||||||
|
# list(GET _SPHINX_VERSION 2 SPHINX_VERSION_PATCH)
|
||||||
|
# if (SPHINX_VERSION_PATCH EQUAL 0)
|
||||||
|
# string (REGEX REPLACE "\\.0$" "" SPHINX_VERSION_STRING "${SPHINX_VERSION_STRING}")
|
||||||
|
# endif ()
|
||||||
|
#endif()
|
||||||
|
#
|
||||||
|
#find_package_handle_standard_args(Sphinx DEFAULT_MSG
|
||||||
|
# SPHINX_EXECUTABLE
|
||||||
|
# VERSION_VAR
|
||||||
|
# SPHINX_VERSION_STRING
|
||||||
|
#)
|
||||||
|
#
|
||||||
|
#mark_as_advanced(
|
||||||
|
# SPHINX_EXECUTABLE
|
||||||
|
# SPHINX_VERSION_STRING
|
||||||
|
#)
|
||||||
|
#
|
||||||
|
#unset(_SPHINX_VERSION_STRING)
|
||||||
|
|
||||||
|
#
|
||||||
|
# PART B. DOWNLOADING AGREEMENT - LICENSE FROM SBIA WITH RIGHT TO SUBLICENSE ("SOFTWARE LICENSE").
|
||||||
|
# ------------------------------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# 1. As used in this Software License, "you" means the individual downloading and/or
|
||||||
|
# using, reproducing, modifying, displaying and/or distributing the Software and
|
||||||
|
# the institution or entity which employs or is otherwise affiliated with such
|
||||||
|
# individual in connection therewith. The Section of Biomedical Image Analysis,
|
||||||
|
# Department of Radiology at the Universiy of Pennsylvania ("SBIA") hereby grants
|
||||||
|
# you, with right to sublicense, with respect to SBIA's rights in the software,
|
||||||
|
# and data, if any, which is the subject of this Software License (collectively,
|
||||||
|
# the "Software"), a royalty-free, non-exclusive license to use, reproduce, make
|
||||||
|
# derivative works of, display and distribute the Software, provided that:
|
||||||
|
# (a) you accept and adhere to all of the terms and conditions of this Software
|
||||||
|
# License; (b) in connection with any copy of or sublicense of all or any portion
|
||||||
|
# of the Software, all of the terms and conditions in this Software License shall
|
||||||
|
# appear in and shall apply to such copy and such sublicense, including without
|
||||||
|
# limitation all source and executable forms and on any user documentation,
|
||||||
|
# prefaced with the following words: "All or portions of this licensed product
|
||||||
|
# (such portions are the "Software") have been obtained under license from the
|
||||||
|
# Section of Biomedical Image Analysis, Department of Radiology at the University
|
||||||
|
# of Pennsylvania and are subject to the following terms and conditions:"
|
||||||
|
# (c) you preserve and maintain all applicable attributions, copyright notices
|
||||||
|
# and licenses included in or applicable to the Software; (d) modified versions
|
||||||
|
# of the Software must be clearly identified and marked as such, and must not
|
||||||
|
# be misrepresented as being the original Software; and (e) you consider making,
|
||||||
|
# but are under no obligation to make, the source code of any of your modifications
|
||||||
|
# to the Software freely available to others on an open source basis.
|
||||||
|
#
|
||||||
|
# 2. The license granted in this Software License includes without limitation the
|
||||||
|
# right to (i) incorporate the Software into proprietary programs (subject to
|
||||||
|
# any restrictions applicable to such programs), (ii) add your own copyright
|
||||||
|
# statement to your modifications of the Software, and (iii) provide additional
|
||||||
|
# or different license terms and conditions in your sublicenses of modifications
|
||||||
|
# of the Software; provided that in each case your use, reproduction or
|
||||||
|
# distribution of such modifications otherwise complies with the conditions
|
||||||
|
# stated in this Software License.
|
||||||
|
#
|
||||||
|
# 3. This Software License does not grant any rights with respect to third party
|
||||||
|
# software, except those rights that SBIA has been authorized by a third
|
||||||
|
# party to grant to you, and accordingly you are solely responsible for
|
||||||
|
# (i) obtaining any permissions from third parties that you need to use,
|
||||||
|
# reproduce, make derivative works of, display and distribute the Software,
|
||||||
|
# and (ii) informing your sublicensees, including without limitation your
|
||||||
|
# end-users, of their obligations to secure any such required permissions.
|
||||||
|
#
|
||||||
|
# 4. The Software has been designed for research purposes only and has not been
|
||||||
|
# reviewed or approved by the Food and Drug Administration or by any other
|
||||||
|
# agency. YOU ACKNOWLEDGE AND AGREE THAT CLINICAL APPLICATIONS ARE NEITHER
|
||||||
|
# RECOMMENDED NOR ADVISED. Any commercialization of the Software is at the
|
||||||
|
# sole risk of the party or parties engaged in such commercialization.
|
||||||
|
# You further agree to use, reproduce, make derivative works of, display
|
||||||
|
# and distribute the Software in compliance with all applicable governmental
|
||||||
|
# laws, regulations and orders, including without limitation those relating
|
||||||
|
# to export and import control.
|
||||||
|
#
|
||||||
|
# 5. The Software is provided "AS IS" and neither SBIA nor any contributor to
|
||||||
|
# the software (each a "Contributor") shall have any obligation to provide
|
||||||
|
# maintenance, support, updates, enhancements or modifications thereto.
|
||||||
|
# SBIA AND ALL CONTRIBUTORS SPECIFICALLY DISCLAIM ALL EXPRESS AND IMPLIED
|
||||||
|
# WARRANTIES OF ANY KIND INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF
|
||||||
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||||
|
# IN NO EVENT SHALL SBIA OR ANY CONTRIBUTOR BE LIABLE TO ANY PARTY FOR
|
||||||
|
# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY ARISING IN ANY WAY RELATED
|
||||||
|
# TO THE SOFTWARE, EVEN IF SBIA OR ANY CONTRIBUTOR HAS BEEN ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGES. TO THE MAXIMUM EXTENT NOT PROHIBITED BY LAW OR
|
||||||
|
# REGULATION, YOU FURTHER ASSUME ALL LIABILITY FOR YOUR USE, REPRODUCTION,
|
||||||
|
# MAKING OF DERIVATIVE WORKS, DISPLAY, LICENSE OR DISTRIBUTION OF THE SOFTWARE
|
||||||
|
# AND AGREE TO INDEMNIFY AND HOLD HARMLESS SBIA AND ALL CONTRIBUTORS FROM
|
||||||
|
# AND AGAINST ANY AND ALL CLAIMS, SUITS, ACTIONS, DEMANDS AND JUDGMENTS ARISING
|
||||||
|
# THEREFROM.
|
||||||
|
#
|
||||||
|
# 6. None of the names, logos or trademarks of SBIA or any of SBIA's affiliates
|
||||||
|
# or any of the Contributors, or any funding agency, may be used to endorse
|
||||||
|
# or promote products produced in whole or in part by operation of the Software
|
||||||
|
# or derived from or based on the Software without specific prior written
|
||||||
|
# permission from the applicable party.
|
||||||
|
#
|
||||||
|
# 7. Any use, reproduction or distribution of the Software which is not in accordance
|
||||||
|
# with this Software License shall automatically revoke all rights granted to you
|
||||||
|
# under this Software License and render Paragraphs 1 and 2 of this Software
|
||||||
|
# License null and void.
|
||||||
|
#
|
||||||
|
# 8. This Software License does not grant any rights in or to any intellectual
|
||||||
|
# property owned by SBIA or any Contributor except those rights expressly
|
||||||
|
# granted hereunder.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# PART C. MISCELLANEOUS
|
||||||
|
# ---------------------
|
||||||
|
#
|
||||||
|
# This Agreement shall be governed by and construed in accordance with the laws
|
||||||
|
# of The Commonwealth of Pennsylvania without regard to principles of conflicts
|
||||||
|
# of law. This Agreement shall supercede and replace any license terms that you
|
||||||
|
# may have agreed to previously with respect to Software from SBIA.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
# @file FindSphinx.cmake
|
||||||
|
# @brief Find Sphinx documentation build tools.
|
||||||
|
#
|
||||||
|
# @par Input variables:
|
||||||
|
# <table border="0">
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_DIR @endtp
|
||||||
|
# <td>Installation directory of Sphinx tools. Can also be set as environment variable.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b SPHINX_DIR @endtp
|
||||||
|
# <td>Alternative environment variable for @c Sphinx_DIR.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_FIND_COMPONENTS @endtp
|
||||||
|
# <td>Sphinx build tools to look for, i.e., 'apidoc' and/or 'build'.</td>
|
||||||
|
# </tr>
|
||||||
|
# </table>
|
||||||
|
#
|
||||||
|
# @par Output variables:
|
||||||
|
# <table border="0">
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_FOUND @endtp
|
||||||
|
# <td>Whether all or only the requested Sphinx build tools were found.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b SPHINX_FOUND @endtp
|
||||||
|
# <td>Alias for @c Sphinx_FOUND.<td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b SPHINX_EXECUTABLE @endtp
|
||||||
|
# <td>Non-cached alias for @c Sphinx-build_EXECUTABLE.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_PYTHON_EXECUTABLE @endtp
|
||||||
|
# <td>Python executable used to run sphinx-build. This is either the
|
||||||
|
# by default found Python interpreter or a specific version as
|
||||||
|
# specified by the shebang (#!) of the sphinx-build script.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_PYTHON_OPTIONS @endtp
|
||||||
|
# <td>A list of Python options extracted from the shebang (#!) of the
|
||||||
|
# sphinx-build script. The -E option is added by this module
|
||||||
|
# if the Python executable is not the system default to avoid
|
||||||
|
# problems with a differing setting of the @c PYTHONHOME.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx-build_EXECUTABLE @endtp
|
||||||
|
# <td>Absolute path of the found sphinx-build tool.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx-apidoc_EXECUTABLE @endtp
|
||||||
|
# <td>Absolute path of the found sphinx-apidoc tool.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_VERSION_STRING @endtp
|
||||||
|
# <td>Sphinx version found e.g. 1.1.2.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_VERSION_MAJOR @endtp
|
||||||
|
# <td>Sphinx major version found e.g. 1.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_VERSION_MINOR @endtp
|
||||||
|
# <td>Sphinx minor version found e.g. 1.</td>
|
||||||
|
# </tr>
|
||||||
|
# <tr>
|
||||||
|
# @tp @b Sphinx_VERSION_PATCH @endtp
|
||||||
|
# <td>Sphinx patch version found e.g. 2.</td>
|
||||||
|
# </tr>
|
||||||
|
# </table>
|
||||||
|
#
|
||||||
|
# @ingroup CMakeFindModules
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
set (_Sphinx_REQUIRED_VARS)
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# initialize search
|
||||||
|
if (NOT Sphinx_DIR)
|
||||||
|
if (NOT $ENV{Sphinx_DIR} STREQUAL "")
|
||||||
|
set (Sphinx_DIR "$ENV{Sphinx_DIR}" CACHE PATH "Installation prefix of Sphinx (docutils)." FORCE)
|
||||||
|
else ()
|
||||||
|
set (Sphinx_DIR "$ENV{SPHINX_DIR}" CACHE PATH "Installation prefix of Sphinx (docutils)." FORCE)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# default components to look for
|
||||||
|
if (NOT Sphinx_FIND_COMPONENTS)
|
||||||
|
set (Sphinx_FIND_COMPONENTS "build")
|
||||||
|
elseif (NOT Sphinx_FIND_COMPONENTS MATCHES "^(build|apidoc)$")
|
||||||
|
message (FATAL_ERROR "Invalid Sphinx component in: ${Sphinx_FIND_COMPONENTS}")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# find components, i.e., build tools
|
||||||
|
foreach (_Sphinx_TOOL IN LISTS Sphinx_FIND_COMPONENTS)
|
||||||
|
if (Sphinx_DIR)
|
||||||
|
find_program (
|
||||||
|
Sphinx-${_Sphinx_TOOL}_EXECUTABLE
|
||||||
|
NAMES sphinx-${_Sphinx_TOOL} sphinx-${_Sphinx_TOOL}.py
|
||||||
|
HINTS "${Sphinx_DIR}"
|
||||||
|
PATH_SUFFIXES bin
|
||||||
|
DOC "The sphinx-${_Sphinx_TOOL} Python script."
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
else ()
|
||||||
|
find_program (
|
||||||
|
Sphinx-${_Sphinx_TOOL}_EXECUTABLE
|
||||||
|
NAMES sphinx-${_Sphinx_TOOL} sphinx-${_Sphinx_TOOL}.py
|
||||||
|
DOC "The sphinx-${_Sphinx_TOOL} Python script."
|
||||||
|
)
|
||||||
|
endif ()
|
||||||
|
mark_as_advanced (Sphinx-${_Sphinx_TOOL}_EXECUTABLE)
|
||||||
|
list (APPEND _Sphinx_REQUIRED_VARS Sphinx-${_Sphinx_TOOL}_EXECUTABLE)
|
||||||
|
endforeach ()
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# determine Python executable used by Sphinx
|
||||||
|
if (Sphinx-build_EXECUTABLE)
|
||||||
|
# extract python executable from shebang of sphinx-build
|
||||||
|
find_package (PythonInterp QUIET)
|
||||||
|
set (Sphinx_PYTHON_EXECUTABLE "${PYTHON_EXECUTABLE}")
|
||||||
|
set (Sphinx_PYTHON_OPTIONS)
|
||||||
|
file (STRINGS "${Sphinx-build_EXECUTABLE}" FIRST_LINE LIMIT_COUNT 1)
|
||||||
|
if (FIRST_LINE MATCHES "^#!(.*/python.*)") # does not match "#!/usr/bin/env python" !
|
||||||
|
string (REGEX REPLACE "^ +| +$" "" Sphinx_PYTHON_EXECUTABLE "${CMAKE_MATCH_1}")
|
||||||
|
if (Sphinx_PYTHON_EXECUTABLE MATCHES "([^ ]+) (.*)")
|
||||||
|
set (Sphinx_PYTHON_EXECUTABLE "${CMAKE_MATCH_1}")
|
||||||
|
string (REGEX REPLACE " +" ";" Sphinx_PYTHON_OPTIONS "${CMAKE_MATCH_2}")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
# this is done to avoid problems with multiple Python versions being installed
|
||||||
|
# remember: CMake command if(STR EQUAL STR) is bad and may cause many troubles !
|
||||||
|
string (REGEX REPLACE "([.+*?^$])" "\\\\\\1" _Sphinx_PYTHON_EXECUTABLE_RE "${PYTHON_EXECUTABLE}")
|
||||||
|
list (FIND Sphinx_PYTHON_OPTIONS -E IDX)
|
||||||
|
if (IDX EQUAL -1 AND NOT Sphinx_PYTHON_EXECUTABLE MATCHES "^${_Sphinx_PYTHON_EXECUTABLE_RE}$")
|
||||||
|
list (INSERT Sphinx_PYTHON_OPTIONS 0 -E)
|
||||||
|
endif ()
|
||||||
|
unset (_Sphinx_PYTHON_EXECUTABLE_RE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# determine Sphinx version
|
||||||
|
if (Sphinx-build_EXECUTABLE)
|
||||||
|
# intentionally use invalid -h option here as the help that is shown then
|
||||||
|
# will include the Sphinx version information
|
||||||
|
if (Sphinx_PYTHON_EXECUTABLE)
|
||||||
|
execute_process (
|
||||||
|
COMMAND "${Sphinx_PYTHON_EXECUTABLE}" ${Sphinx_PYTHON_OPTIONS} "${Sphinx-build_EXECUTABLE}" -h
|
||||||
|
OUTPUT_VARIABLE _Sphinx_VERSION
|
||||||
|
ERROR_VARIABLE _Sphinx_VERSION
|
||||||
|
)
|
||||||
|
elseif (UNIX)
|
||||||
|
execute_process (
|
||||||
|
COMMAND "${Sphinx-build_EXECUTABLE}" -h
|
||||||
|
OUTPUT_VARIABLE _Sphinx_VERSION
|
||||||
|
ERROR_VARIABLE _Sphinx_VERSION
|
||||||
|
)
|
||||||
|
endif ()
|
||||||
|
if (_Sphinx_VERSION MATCHES "Sphinx v([0-9]+\\.[0-9]+\\.[0-9]+)")
|
||||||
|
set (Sphinx_VERSION_STRING "${CMAKE_MATCH_1}")
|
||||||
|
string (REPLACE "." ";" _Sphinx_VERSION "${Sphinx_VERSION_STRING}")
|
||||||
|
list(GET _Sphinx_VERSION 0 Sphinx_VERSION_MAJOR)
|
||||||
|
list(GET _Sphinx_VERSION 1 Sphinx_VERSION_MINOR)
|
||||||
|
list(GET _Sphinx_VERSION 2 Sphinx_VERSION_PATCH)
|
||||||
|
if (Sphinx_VERSION_PATCH EQUAL 0)
|
||||||
|
string (REGEX REPLACE "\\.0$" "" Sphinx_VERSION_STRING "${Sphinx_VERSION_STRING}")
|
||||||
|
endif ()
|
||||||
|
endif()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# compatibility with FindPythonInterp.cmake and FindPerl.cmake
|
||||||
|
set (SPHINX_EXECUTABLE "${Sphinx-build_EXECUTABLE}")
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# handle the QUIETLY and REQUIRED arguments and set SPHINX_FOUND to TRUE if
|
||||||
|
# all listed variables are TRUE
|
||||||
|
include (FindPackageHandleStandardArgs)
|
||||||
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS (
|
||||||
|
Sphinx
|
||||||
|
REQUIRED_VARS
|
||||||
|
${_Sphinx_REQUIRED_VARS}
|
||||||
|
# VERSION_VAR # This isn't available until CMake 2.8.8 so don't use it.
|
||||||
|
Sphinx_VERSION_STRING
|
||||||
)
|
)
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
# ----------------------------------------------------------------------------
|
||||||
|
# set Sphinx_DIR
|
||||||
|
if (NOT Sphinx_DIR AND Sphinx-build_EXECUTABLE)
|
||||||
|
get_filename_component (Sphinx_DIR "${Sphinx-build_EXECUTABLE}" PATH)
|
||||||
|
string (REGEX REPLACE "/bin/?" "" Sphinx_DIR "${Sphinx_DIR}")
|
||||||
|
set (Sphinx_DIR "${Sphinx_DIR}" CACHE PATH "Installation directory of Sphinx tools." FORCE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
find_package_handle_standard_args(Sphinx DEFAULT_MSG
|
unset (_Sphinx_VERSION)
|
||||||
SPHINX_EXECUTABLE
|
unset (_Sphinx_REQUIRED_VARS)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(
|
|
||||||
SPHINX_EXECUTABLE
|
|
||||||
)
|
|
@ -59,17 +59,100 @@ used as described above.
|
|||||||
CMake (various platforms, including Windows)
|
CMake (various platforms, including Windows)
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
|
|
||||||
Jansson can be built using CMake. Create a build directory for an
|
Jansson can be built using CMake_. Create a build directory for an
|
||||||
out-of-tree build, change to that directory, and run cmake (or ccmake,
|
out-of-tree build, change to that directory, and run ``cmake`` (or ``ccmake``,
|
||||||
cmake-gui, or similar) to configure the project.
|
``cmake-gui``, or similar) to configure the project.
|
||||||
|
|
||||||
Then proceed to build the source with your system's native build
|
See the examples below for more detailed information.
|
||||||
tools. For example, on Unix::
|
|
||||||
|
.. note:: In the below examples ``..`` is used as an argument for ``cmake``.
|
||||||
|
This is simply the path to the jansson project root directory.
|
||||||
|
In the example it is assumed you've created a sub-directory ``build``
|
||||||
|
and are using that. You could use any path you want.
|
||||||
|
|
||||||
|
.. _build-cmake-unix:
|
||||||
|
|
||||||
|
Unix (Make files)
|
||||||
|
.................
|
||||||
|
Generating make files on unix:
|
||||||
|
|
||||||
|
.. parsed-literal::
|
||||||
|
|
||||||
|
bunzip2 -c jansson-|release|.tar.bz2 | tar xf -
|
||||||
|
cd jansson-|release|
|
||||||
|
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake .. # or `ccmake ..` for a GUI.
|
||||||
|
|
||||||
|
Then to build::
|
||||||
|
|
||||||
make
|
make
|
||||||
make test
|
make check
|
||||||
make install
|
make install
|
||||||
|
|
||||||
|
Windows (Visual Studio)
|
||||||
|
.......................
|
||||||
|
Creating Visual Studio project files from the command line:
|
||||||
|
|
||||||
|
.. parsed-literal::
|
||||||
|
|
||||||
|
<unpack>
|
||||||
|
cd jansson-|release|
|
||||||
|
|
||||||
|
md build
|
||||||
|
cd build
|
||||||
|
cmake -G "Visual Studio 10" ..
|
||||||
|
|
||||||
|
You will now have a *Visual Studio Solution* in your build directory.
|
||||||
|
To run the unit tests build the ``RUN_TESTS`` project.
|
||||||
|
|
||||||
|
If you prefer a GUI the ``cmake`` line in the above example can
|
||||||
|
be replaced with::
|
||||||
|
|
||||||
|
cmake-gui ..
|
||||||
|
|
||||||
|
For command line help (including a list of available generators)
|
||||||
|
for CMake_ simply run::
|
||||||
|
|
||||||
|
cmake
|
||||||
|
|
||||||
|
To list available CMake_ settings (and what they are currently set to)
|
||||||
|
for the project, run::
|
||||||
|
|
||||||
|
cmake -LH ..
|
||||||
|
|
||||||
|
Mac OSX (Xcode)
|
||||||
|
...............
|
||||||
|
If you prefer using Xcode instead of make files on OSX,
|
||||||
|
do the following. (Use the same steps as
|
||||||
|
for :ref:`Unix <build-cmake-unix>`)::
|
||||||
|
|
||||||
|
...
|
||||||
|
cmake -G "Xcode" ..
|
||||||
|
|
||||||
|
Additional CMake settings
|
||||||
|
.........................
|
||||||
|
|
||||||
|
Shared library
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
By default the CMake_ project will generate build files for building the
|
||||||
|
static library. To build the shared version use::
|
||||||
|
|
||||||
|
...
|
||||||
|
cmake -DBUILD_SHARED=1 ..
|
||||||
|
|
||||||
|
Changing install directory (same as autoconf --prefix)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Just as with the autoconf_ project you can change the destination directory
|
||||||
|
for ``make install``. The equivalent for autoconfs ``./configure --prefix``
|
||||||
|
in CMake_ is::
|
||||||
|
|
||||||
|
...
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX:PATH=/some/other/path ..
|
||||||
|
make install
|
||||||
|
|
||||||
|
.. _CMake: http://www.cmake.org
|
||||||
|
|
||||||
Android
|
Android
|
||||||
-------
|
-------
|
||||||
|
Loading…
Reference in New Issue
Block a user