[CMake] Escape/quote spaces in ARGS of EXEC_PROGRAM?
Brad King
brad.king at kitware.com
Tue Feb 28 09:04:00 EST 2006
Zachary Pincus wrote:
> Hi folks,
>
> I'm trying to run a program via EXEC_PROGRAM, where one of the
> arguments contains ${CMAKE_CURRENT_BINARY_DIRECTORY}, which may of
> course contain spaces or other characters that need escaping or quoting.
>
> Here's what the cmake block looks like (it's trying to learn the site-
> packages directory from python).
>
> IF(PYTHON_EXECUTABLE)
> FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/det_spp.py "try:\n import
> distutils.sysconfig; print distutils.sysconfig.get_python_lib()
> \nexcept: pass")
> EXEC_PROGRAM("${PYTHON_EXECUTABLE}"
> ARGS "${CMAKE_CURRENT_BINARY_DIR}/det_spp.py"
> OUTPUT_VARIABLE py_spp)
> ENDIF(PYTHON_EXECUTABLE)
>
> Right now (using a CMake CVS checkout from yesterday) this fails when
> the path to the current binary dir has spaces in it. Is there anything
> I can do?
Use the new EXECUTE_PROCESS command instead.
If you need compatibility with CMake 2.2 and earlier then escape the
quotes so they get passed explicitly on the command line"
EXEC_PROGRAM("${PYTHON_EXECUTABLE}"
ARGS \"${CMAKE_CURRENT_BINARY_DIR}/det_spp.py\"
OUTPUT_VARIABLE py_spp)
-Brad
More information about the CMake
mailing list