Construct an initial Boost_FOUND value immediately after searching for
Boost_INCLUDE_DIR. Base the result only on whether header files for the
requested version were found. Then after searching for component
libraries update Boost_FOUND based on whether all requested components
were found.
Construct the value from scratch based on the component library list.
Avoid accumulating values from repeated find_package(Boost) calls.
If Boost is not found, Boost_LIBRARIES should be empty.
Overhaul the implementation as follows:
(1) Do not cache result variables such as Boost_VERSION,
Boost_LIB_VERSION, Boost_LIBRARY_DIRS, Boost_${COMPONENT}_FOUND,
Boost_${COMPONENT}_LIBRARY, or Boost_LIB_DIAGNOSTIC_DEFINITIONS that are
derived uniquely from other search results. The user should not edit
them anyway.
(2) Add cache value Boost_LIBRARY_DIR to hold the single directory
expected to contain all libraries. Once one library is found, search
only that directory for other libraries.
(3) Use the find_library NAMES_PER_DIR option to consider all possible
library names at the same time.
(4) Collect all documented input and cache variables and detect when
they have been changed by the user. Discard prior search results that
may have been influenced by the changes and search for them again.
Environment variables are not expected to be persistent so use them only
as hints and do not consider changes to them to be meaningful.
The CMake find_path command looks under the proper "Program Files"
directories on Windows with any of the provided PATH_SUFFIXES. This is
simpler and more robust than directly reading ENV{ProgramFiles}. Once
Boost_INCLUDE_DIR has been located we already look next to it for the lib
directory anyway, so we do not need special help to find Boost libraries
under "Program Files".
When more than one value is given to the NAMES option this command by
default will consider one name at a time and search every directory for
it. Add a NAMES_PER_DIR option to tell this command to consider one
directory at a time and search for all names in it.
In Tests/CMakeOnly/find_library/CMakeLists.txt generalize the
test_find_library macro and move the lib64 substitution logic to a new
test_find_library_subst macro.
In cmFindLibraryCommand::FindFrameworkLibrary drop use of the old
SystemTools::FindDirectory method. Replace it with a direct
implementation of the only code path we used.
Teach cmFindLibraryHelper to support multiple possible names and iterate
over all of them in each CheckDirectory call. For now we still only
ever configure one name.
Removing the Process() API and removing the parameters from the
constructor will allow cmGeneratorExpressions to be cached and evaluated
with multiple configs for example, such as when evaluating target
properties. This requires the creation of a new compiled representation
of cmGeneratorExpression. The cmListFileBacktrace remains in the
constructor so that we can record where a particular generator
expression appeared in the CMakeLists file.
The expressions may be parsed and then cached and evaluated multiple
times. They are evaluated lazily so that literals such as ',' can be
treated as universal parameter separators, and can be processed from
results without appearing literally, and without interfering with the
parsing/evaluation of the entire expression.
25a4f56 Build with Qt5 if it is found.
717f31a Compile with both Qt4 and Qt5.
066e858 Replace two include_directories with a setting.
430ba9f Use add_subdirectory instead of the obsolete subdirs.
32a5725 Remove an if which is always true.
0b6625c Move variable setting down to where it relates to.
8ab312b Use CMake platform variables instead of Qt ones.
bd728f6 Add a return-after-error if an old Qt is found.
Some download URLs do not have the filename embedded in the url.
Add an interface to specify the local filename explicitly.
Suggested-by: James Goppert <james.goppert@gmail.com>
Some servers require a User-Agent string. The curl command-line tool
just sends "curl/$curlver", so do the same.
Suggested-by: Fredrik Ehnbom <fehnbom@nvidia.com>
Use the registry entries that vsvars32.bat uses to detect the location of
MSBuild.exe in the framework directory. Invoke MSBuild with the option
/p:VisualStudioVersion=$version
so it knows from which VS version to load the system build rules. Teach
cmGlobalVisualStudio11Generator to set its ExpressEdition member using the
registry.
Add WDExpress to the list of registry search locations. Add VS 11 to
the list of VS versions and corresponding generator names. Fix the
search logic to use the most recent version found under any registry
entry.
Inspired-by: Peter Kümmel <syntheticpp@gmx.net>
Clang has the same interface as GNU except that we do not need to test
for the deployment target and sysroot flags. Simply set variables
CMAKE_${lang}_HAS_ISYSROOT
CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG
to true because every version of Clang available on OS X supports these
flags.
The logic added in commit e1c89f08 (file(DOWNLOAD): Add options for SSL,
2012-08-21) did not actually provide the documented behavior. Simplify
the implementation to read the variable values first and then replace
them with the explicit argument values if encountered. Always set the
curl option CURLOPT_SSL_VERIFYPEER to either on or off explicitly
instead of depending on the curl default behavior.
TLS has superseded SSL so rename the recently added file(DOWNLOAD) and
ExternalProject options using the newer terminology. Drop "CURLOPT"
from names because curl is an implementation detail.
This commit adds the ability to turn on and off ssl certificate
authority checking. It also adds the ability to specify a
certificate authority information file. This can be done
by setting global cmake variables CMAKE_CURLOPT_CAINFO_FILE
and or CMAKE_CURLOPT_SSL_VERIFYPEER in the project calling
ExternalProject_Add, or by passing those options to individual
ExternalProject_Add calls.