Merge topic 'doc-cmake-policies-manual-improvements'

5f948d2a Help: Add policy summaries to cmake-policies(7)
b74d73e5 Help: Organize cmake-policies(7) manual by version of introduction
de370656 cmRST: Parse toctree lines with Sphinx cross-reference syntax
845cb217 CMP0059: Fix typo in policy description
This commit is contained in:
Brad King 2016-05-03 10:17:00 -04:00 committed by CMake Topic Stage
commit 3fc49c50b0
6 changed files with 128 additions and 75 deletions

View File

@ -51,75 +51,117 @@ The :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable may also be used
to determine whether to report an error on use of deprecated macros or to determine whether to report an error on use of deprecated macros or
functions. functions.
All Policies Policies Introduced by CMake 3.4
============ ================================
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
/policy/CMP0000 CMP0065: Do not add flags to export symbols from executables without the ENABLE_EXPORTS target property. </policy/CMP0065>
/policy/CMP0001 CMP0064: Support new TEST if() operator. </policy/CMP0064>
/policy/CMP0002
/policy/CMP0003 Policies Introduced by CMake 3.3
/policy/CMP0004 ================================
/policy/CMP0005
/policy/CMP0006 .. toctree::
/policy/CMP0007 :maxdepth: 1
/policy/CMP0008
/policy/CMP0009 CMP0063: Honor visibility properties for all target types. </policy/CMP0063>
/policy/CMP0010 CMP0062: Disallow install() of export() result. </policy/CMP0062>
/policy/CMP0011 CMP0061: CTest does not by default tell make to ignore errors (-i). </policy/CMP0061>
/policy/CMP0012 CMP0060: Link libraries by full path even in implicit directories. </policy/CMP0060>
/policy/CMP0013 CMP0059: Do not treat DEFINITIONS as a built-in directory property. </policy/CMP0059>
/policy/CMP0014 CMP0058: Ninja requires custom command byproducts to be explicit. </policy/CMP0058>
/policy/CMP0015 CMP0057: Support new IN_LIST if() operator. </policy/CMP0057>
/policy/CMP0016
/policy/CMP0017 Policies Introduced by CMake 3.2
/policy/CMP0018 ================================
/policy/CMP0019
/policy/CMP0020 .. toctree::
/policy/CMP0021 :maxdepth: 1
/policy/CMP0022
/policy/CMP0023 CMP0056: Honor link flags in try_compile() source-file signature. </policy/CMP0056>
/policy/CMP0024 CMP0055: Strict checking for break() command. </policy/CMP0055>
/policy/CMP0025
/policy/CMP0026 Policies Introduced by CMake 3.1
/policy/CMP0027 ================================
/policy/CMP0028
/policy/CMP0029 .. toctree::
/policy/CMP0030 :maxdepth: 1
/policy/CMP0031
/policy/CMP0032 CMP0054: Only interpret if() arguments as variables or keywords when unquoted. </policy/CMP0054>
/policy/CMP0033 CMP0053: Simplify variable reference and escape sequence evaluation. </policy/CMP0053>
/policy/CMP0034 CMP0052: Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES. </policy/CMP0052>
/policy/CMP0035 CMP0051: List TARGET_OBJECTS in SOURCES target property. </policy/CMP0051>
/policy/CMP0036
/policy/CMP0037 Policies Introduced by CMake 3.0
/policy/CMP0038 ================================
/policy/CMP0039
/policy/CMP0040 .. toctree::
/policy/CMP0041 :maxdepth: 1
/policy/CMP0042
/policy/CMP0043 CMP0050: Disallow add_custom_command SOURCE signatures. </policy/CMP0050>
/policy/CMP0044 CMP0049: Do not expand variables in target source entries. </policy/CMP0049>
/policy/CMP0045 CMP0048: project() command manages VERSION variables. </policy/CMP0048>
/policy/CMP0046 CMP0047: Use QCC compiler id for the qcc drivers on QNX. </policy/CMP0047>
/policy/CMP0047 CMP0046: Error on non-existent dependency in add_dependencies. </policy/CMP0046>
/policy/CMP0048 CMP0045: Error on non-existent target in get_target_property. </policy/CMP0045>
/policy/CMP0049 CMP0044: Case sensitive Lang_COMPILER_ID generator expressions. </policy/CMP0044>
/policy/CMP0050 CMP0043: Ignore COMPILE_DEFINITIONS_Config properties. </policy/CMP0043>
/policy/CMP0051 CMP0042: MACOSX_RPATH is enabled by default. </policy/CMP0042>
/policy/CMP0052 CMP0041: Error on relative include with generator expression. </policy/CMP0041>
/policy/CMP0053 CMP0040: The target in the TARGET signature of add_custom_command() must exist. </policy/CMP0040>
/policy/CMP0054 CMP0039: Utility targets may not have link dependencies. </policy/CMP0039>
/policy/CMP0055 CMP0038: Targets may not link directly to themselves. </policy/CMP0038>
/policy/CMP0056 CMP0037: Target names should not be reserved and should match a validity pattern. </policy/CMP0037>
/policy/CMP0057 CMP0036: The build_name command should not be called. </policy/CMP0036>
/policy/CMP0058 CMP0035: The variable_requires command should not be called. </policy/CMP0035>
/policy/CMP0059 CMP0034: The utility_source command should not be called. </policy/CMP0034>
/policy/CMP0060 CMP0033: The export_library_dependencies command should not be called. </policy/CMP0033>
/policy/CMP0061 CMP0032: The output_required_files command should not be called. </policy/CMP0032>
/policy/CMP0062 CMP0031: The load_command command should not be called. </policy/CMP0031>
/policy/CMP0063 CMP0030: The use_mangled_mesa command should not be called. </policy/CMP0030>
/policy/CMP0064 CMP0029: The subdir_depends command should not be called. </policy/CMP0029>
/policy/CMP0065 CMP0028: Double colon in target name means ALIAS or IMPORTED target. </policy/CMP0028>
CMP0027: Conditionally linked imported targets with missing include directories. </policy/CMP0027>
CMP0026: Disallow use of the LOCATION target property. </policy/CMP0026>
CMP0025: Compiler id for Apple Clang is now AppleClang. </policy/CMP0025>
CMP0024: Disallow include export result. </policy/CMP0024>
Policies Introduced by CMake 2.8
================================
.. toctree::
:maxdepth: 1
CMP0023: Plain and keyword target_link_libraries signatures cannot be mixed. </policy/CMP0023>
CMP0022: INTERFACE_LINK_LIBRARIES defines the link interface. </policy/CMP0022>
CMP0021: Fatal error on relative paths in INCLUDE_DIRECTORIES target property. </policy/CMP0021>
CMP0020: Automatically link Qt executables to qtmain target on Windows. </policy/CMP0020>
CMP0019: Do not re-expand variables in include and link information. </policy/CMP0019>
CMP0018: Ignore CMAKE_SHARED_LIBRARY_Lang_FLAGS variable. </policy/CMP0018>
CMP0017: Prefer files from the CMake module directory when including from there. </policy/CMP0017>
CMP0016: target_link_libraries() reports error if its only argument is not a target. </policy/CMP0016>
CMP0015: link_directories() treats paths relative to the source dir. </policy/CMP0015>
CMP0014: Input directories must have CMakeLists.txt. </policy/CMP0014>
CMP0013: Duplicate binary directories are not allowed. </policy/CMP0013>
CMP0012: if() recognizes numbers and boolean constants. </policy/CMP0012>
Policies Introduced by CMake 2.6
================================
.. toctree::
:maxdepth: 1
CMP0011: Included scripts do automatic cmake_policy PUSH and POP. </policy/CMP0011>
CMP0010: Bad variable reference syntax is an error. </policy/CMP0010>
CMP0009: FILE GLOB_RECURSE calls should not follow symlinks by default. </policy/CMP0009>
CMP0008: Libraries linked by full-path must have a valid library file name. </policy/CMP0008>
CMP0007: list command no longer ignores empty elements. </policy/CMP0007>
CMP0006: Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION. </policy/CMP0006>
CMP0005: Preprocessor definition values are now escaped automatically. </policy/CMP0005>
CMP0004: Libraries linked may not have leading or trailing whitespace. </policy/CMP0004>
CMP0003: Libraries linked via full path no longer produce linker search paths. </policy/CMP0003>
CMP0002: Logical target names must be globally unique. </policy/CMP0002>
CMP0001: CMAKE_BACKWARDS_COMPATIBILITY should no longer be used. </policy/CMP0001>
CMP0000: A minimum required CMake version must be specified. </policy/CMP0000>

View File

@ -1,7 +1,7 @@
CMP0059 CMP0059
------- -------
Don't treat ``DEFINITIONS`` as a built-in directory property. Do not treat ``DEFINITIONS`` as a built-in directory property.
CMake 3.3 and above no longer make a list of definitions available through CMake 3.3 and above no longer make a list of definitions available through
the :prop_dir:`DEFINITIONS` directory property. The the :prop_dir:`DEFINITIONS` directory property. The

View File

@ -204,7 +204,7 @@ class cmPolicy;
"Ninja requires custom command byproducts to be explicit.", \ "Ninja requires custom command byproducts to be explicit.", \
3, 3, 0, cmPolicies::WARN) \ 3, 3, 0, cmPolicies::WARN) \
SELECT(POLICY, CMP0059, \ SELECT(POLICY, CMP0059, \
"Do no treat DEFINITIONS as a built-in directory property.", \ "Do not treat DEFINITIONS as a built-in directory property.", \
3, 3, 0, cmPolicies::WARN) \ 3, 3, 0, cmPolicies::WARN) \
SELECT(POLICY, CMP0060, \ SELECT(POLICY, CMP0060, \
"Link libraries by full path even in implicit directories.", \ "Link libraries by full path even in implicit directories.", \

View File

@ -46,7 +46,8 @@ cmRST::cmRST(std::ostream& os, std::string const& docroot):
"):`(<*([^`<]|[^` \t]<)*)([ \t]+<[^`]*>)?`"), "):`(<*([^`<]|[^` \t]<)*)([ \t]+<[^`]*>)?`"),
Substitution("(^|[^A-Za-z0-9_])" Substitution("(^|[^A-Za-z0-9_])"
"((\\|[^| \t\r\n]([^|\r\n]*[^| \t\r\n])?\\|)(__|_|))" "((\\|[^| \t\r\n]([^|\r\n]*[^| \t\r\n])?\\|)(__|_|))"
"([^A-Za-z0-9_]|$)") "([^A-Za-z0-9_]|$)"),
TocTreeLink("^.*[ \t]+<([^>]+)>$")
{ {
this->Replace["|release|"] = cmVersion::GetCMakeVersion(); this->Replace["|release|"] = cmVersion::GetCMakeVersion();
} }
@ -429,9 +430,18 @@ void cmRST::ProcessDirectiveTocTree()
for(std::vector<std::string>::iterator i = this->MarkupLines.begin(); for(std::vector<std::string>::iterator i = this->MarkupLines.begin();
i != this->MarkupLines.end(); ++i) i != this->MarkupLines.end(); ++i)
{ {
if(!i->empty() && i->find_first_of(":") == i->npos) std::string const& line = *i;
if (!line.empty() && line[0] != ':')
{ {
this->ProcessInclude(*i + ".rst", IncludeTocTree); if (this->TocTreeLink.find(line))
{
std::string const& link = this->TocTreeLink.match(1);
this->ProcessInclude(link + ".rst", IncludeTocTree);
}
else
{
this->ProcessInclude(line + ".rst", IncludeTocTree);
}
} }
} }
} }

View File

@ -89,6 +89,7 @@ private:
cmsys::RegularExpression ModuleRST; cmsys::RegularExpression ModuleRST;
cmsys::RegularExpression CMakeRole; cmsys::RegularExpression CMakeRole;
cmsys::RegularExpression Substitution; cmsys::RegularExpression Substitution;
cmsys::RegularExpression TocTreeLink;
std::vector<std::string> MarkupLines; std::vector<std::string> MarkupLines;
std::string DocDir; std::string DocDir;

View File

@ -1,5 +1,5 @@
CMake Warning \(dev\) at CMP0059-WARN.cmake:6 \(get_property\): CMake Warning \(dev\) at CMP0059-WARN.cmake:6 \(get_property\):
Policy CMP0059 is not set: Do no treat DEFINITIONS as a built-in directory Policy CMP0059 is not set: Do not treat DEFINITIONS as a built-in directory
property. Run "cmake --help-policy CMP0059" for policy details. Use the property. Run "cmake --help-policy CMP0059" for policy details. Use the
cmake_policy command to set the policy and suppress this warning. cmake_policy command to set the policy and suppress this warning.
Call Stack \(most recent call first\): Call Stack \(most recent call first\):
@ -8,7 +8,7 @@ This warning is for project developers. Use -Wno-dev to suppress it.
DEFS: -DSOME_DEF DEFS: -DSOME_DEF
CMake Warning \(dev\) at CMP0059-WARN.cmake:14 \(get_property\): CMake Warning \(dev\) at CMP0059-WARN.cmake:14 \(get_property\):
Policy CMP0059 is not set: Do no treat DEFINITIONS as a built-in directory Policy CMP0059 is not set: Do not treat DEFINITIONS as a built-in directory
property. Run "cmake --help-policy CMP0059" for policy details. Use the property. Run "cmake --help-policy CMP0059" for policy details. Use the
cmake_policy command to set the policy and suppress this warning. cmake_policy command to set the policy and suppress this warning.
Call Stack \(most recent call first\): Call Stack \(most recent call first\):