Store the definitions in a cmLinkedTree in the cmMakefile. This can
be moved to cmState and then the tree will provide snapshotting
possibilities. It will also make the Closure copy created at
the start of each cmMakefile unnecesarry.
Refactoring in commit 6ed9c7e0 (cmState: Host buildsystem properties for
directories, 2015-07-18) broke include_directories(BEFORE). Fix it and
add a test case.
Improve formatting, primarily by:
* Adding links to relevant commands, properties, generators, and so on.
* Converting code, symbols, paths, and so on to fixed-width fonts.
* Hard wrapping lines to 80 characters or less.
The handling of multilevel dependencies has been fixed in Visual Studio 2013.
The work around used for VS 2010 and VS 2012 does not work for VS 2013 any more.
Switch to normal object build rules for VS 2013 and newer.
This property was added by commit v2.8.9~204^2~2 (Support building
shared libraries or modules without soname, 2012-04-22). A test for
using the property on MODULE libraries was added by commit
v2.8.9~204^2~1 (Test NO_SONAME property, 2012-04-23). Add such a test
for SHARED libraries too.
Since support for generator expressions was added to OUTPUT_NAME it is
possible for project code to cause recursion in this method by using a
$<TARGET_FILE> genex. Detect and reject such cases.
Exposed by a CMP0054 warning with code like:
cmake_minimum_required(VERSION 2.8.9 FATAL_ERROR)
project(MyProj NONE)
enable_language(C)
enable_language(CXX)
While at it, use STREQUAL for testing the compiler id against "GNU".
Suggested-by: Rolf Eike Beer <eike@sf-mail.de>
CMAKE_<LANG>_OUTPUT_EXTENSION tells us the proper extension for the
current toolchain. Teach the ComputeObjectFilenames method to use
GetLanguageOutputExtension to look up the extension instead of
hard-coding ".obj". This is already done in the code path for explicit
file names inside our call to GetObjectFileNameWithoutTarget.
If CMAKE_MINIMUM_REQUIRED_VERSION is not set because no
cmake_minimum_required() call is present this line can lead to an error as that
string is empty so too few arguments are passed to if():
See also "/var/tmp/paludis/build/kde-krdc-15.08.0/work/build/CMakeFiles/CMakeOutput.log".
See also "/var/tmp/paludis/build/kde-krdc-15.08.0/work/build/CMakeFiles/CMakeError.log".
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:112 (elseif):
given arguments:
"VERSION_LESS" "3.1"
Unknown arguments specified
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPkgConfig.cmake:501 (_pkgconfig_parse_options)
/usr/share/cmake/Modules/FindOpenSSL.cmake:43 (pkg_check_modules)
In the get_filename_component command, add a new BASE_DIR parameter to
use with the ABSOLUTE and REALPATH options. This will be used when
finding an absolute path from a relative path.