My patches to CMake
Go to file
Brad King 1823ab4d76 ExternalData: Preserve escaped semicolons during argument expansion
The CMake language implicitly flattens lists so a ";" in a list element
must be escaped with a backslash.  List expansion removes backslashes
escaping semicolons to leave raw semicolons in the values.  Teach
ExternalData_Add_Test and ExternalData_Expand_Arguments to re-escape
semicolons found in list elements so the resulting argument lists work
as if constructed directly by the set() command.

For example:

  ExternalData_Add_Test(Data NAME test1 COMMAND ... "a\\;b")
  ExternalData_Expand_Arguments(Data args2 "c\\;d")
  add_test(NAME test2 COMMAND ... ${args2})

should be equivalent to

  set(args1 "a\\;b")
  add_test(NAME test1 COMMAND ... ${args1})
  set(args2 "c\\;d")
  add_test(NAME test2 COMMAND ... ${args2})

which is equivalent to

  add_test(NAME test1 COMMAND ... "a;b")
  add_test(NAME test2 COMMAND ... "c;d")

Note that it is not possible to make ExternalData_Add_Test act exactly
like add_test when quoted arguments contain semicolons because the CMake
language flattens lists when constructing function ARGN values.  This
re-escape approach at least allows test arguments to have semicolons.

While at it, teach ExternalData APIs to not transform "DATA{...;...}"
arguments because the contained semicolons are non-sensical.

Suggested-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
2013-03-12 16:33:19 -04:00
Docs cmake-mode.el: add local keybindings 2012-09-21 06:28:24 +02:00
Example Remove trailing whitespace from most CMake and C/C++ code 2012-08-13 14:18:39 -04:00
Modules ExternalData: Preserve escaped semicolons during argument expansion 2013-03-12 16:33:19 -04:00
Source CMake Nightly Date Stamp 2013-03-12 00:01:18 -04:00
Templates Fix config-specific INCLUDE_DIRECTORIES in multi-config generators 2012-10-17 16:24:14 -04:00
Tests ExternalData: Preserve escaped semicolons during argument expansion 2013-03-12 16:33:19 -04:00
Utilities Merge branch 'upstream-kwiml' into update-KWIML 2013-01-08 15:31:53 -05:00
.gitattributes Exclude from source archives files specific to Git work tree 2012-03-02 13:39:29 -05:00
.hooks-config.bash Add pre-commit|commit-msg|prepare-commit-msg hook placeholders 2011-10-24 10:18:36 -04:00
CMakeCPack.cmake Convert the CPACK_CYGWIN_PATCH_NUMBER variable to a cache variable 2012-08-16 16:40:24 -04:00
CMakeCPackOptions.cmake.in CPack: Add a WiX Generator (#11575) 2012-12-03 11:00:31 -05:00
CMakeGraphVizOptions.cmake Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
CMakeLists.txt Tests: Add generator toolset support 2013-02-07 11:09:56 -05:00
CMakeLogo.gif ENH: fancier logo 2007-11-26 13:21:57 -05:00
CTestConfig.cmake Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
CTestCustom.cmake.in Merge topic 'import-KWSys-subtree' 2012-11-07 09:07:15 -05:00
CTestCustom.ctest.in ENH: Create CTestCustom.cmake instead of CTestCustom.ctest. Create the old file to include the new one for compatibility. This should prevent the long delays of CTest traversing the whole tree looking for CTestCustom.ctest files. 2007-08-31 14:51:09 -04:00
ChangeLog.manual CMake 2.8.10.2 2012-11-26 13:04:20 -05:00
ChangeLog.txt Add new changelog to get ready for release 2009-09-23 16:45:29 -04:00
CompileFlags.cmake Linux/PA-RISC: Link with --unique=.text.* to help binutils 2012-10-31 16:28:51 -04:00
Copyright.txt Update main Copyright.txt year range for 2011 2011-11-10 07:56:31 -05:00
DartConfig.cmake Convert CMake to OSI-approved BSD License 2009-09-28 11:43:28 -04:00
DartLocal.conf.in ENH: remove superior dean i, no longer uses borland 2007-12-03 20:44:43 -05:00
Readme.txt Convert CMake to OSI-approved BSD License 2009-09-28 11:43:28 -04:00
bootstrap Add a new Export generator for IMPORTED targets. 2013-02-22 08:35:38 -05:00
cmake_uninstall.cmake.in Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
configure Simplify bootstrap script source dir detection 2009-09-25 10:48:24 -04:00
doxygen.config Remove trailing whitespace from most CMake and C/C++ code 2012-08-13 14:18:39 -04:00

Readme.txt

This is CMake, the cross-platform, open-source make system.
CMake is distributed under the BSD License, see Copyright.txt.
For documentation see the Docs/ directory once you have built CMake
or visit http://www.cmake.org.


Building CMake
==============


Supported Platforms
-------------------

MS Windows, Mac OS X, Linux, FreeBSD, Solaris, HP-UX, IRIX, BeOS, QNX

Other UNIX-like operating systems may work too out of the box, if not
it shouldn't be a major problem to port CMake to this platform. Contact the
CMake mailing list in this case: http://www.cmake.org/mailman/listinfo/cmake


If you don't have any previous version of CMake already installed
--------------------------------------------------------------

* UNIX/Mac OSX/MinGW/MSYS/Cygwin:

You need to have a compiler and a make installed.
Run the bootstrap script you find the in the source directory of CMake.
You can use the --help option to see the supported options.
You may want to use the --prefix=<install_prefix> option to specify a custom
installation directory for CMake. You can run the bootstrap script from
within the CMake source directory or any other build directory of your
choice. Once this has finished successfully, run make and make install.
So basically it's the same as you may be used to from autotools-based
projects:

$ ./bootstrap; make; make install


* Other Windows:

You need to download and install a binary release of CMake in order to build
CMake.  You can get these releases from
http://www.cmake.org/HTML/Download.html .  Then proceed with the instructions
below.


You already have a version of CMake installed
---------------------------------------------

You can build CMake as any other project with a CMake-based build system:
run the installed CMake on the sources of this CMake with your preferred
options and generators. Then build it and install it.
For instructions how to do this, see http://www.cmake.org/HTML/RunningCMake.html