[CMake] Is it possible for CMake to generate unescaped quotes on the (bash) command line as a result of add_custom_command?
Alan W. Irwin
irwin at beluga.phys.uvic.ca
Fri Apr 13 15:48:10 EDT 2018
Hi Nils:
I am asking this question directly of you because in the past (at
<https://cmake.org/Bug/view.php?id=15898>) you stated
"To pass quotes directly to the command either [["foo"]] or \"foo\"
should work."
But that doesn't work for me (using make and the bash command-line on
Linux), and instead with either of those two methods I get escaped
quotes on the command-line.
My use case (for add_custom_command with
VERBATIM and cmake 3.6.2 or higher) is as follows:
COMMAND test-drv-info
${LIBRARY_TARGET_PREFIX} ${SOURCE_ROOT_NAME}
> ${CMAKE_CURRENT_BINARY_DIR}/test_dyndrivers_dir/${SOURCE_ROOT_NAME}.driver_info
that translates to
./test-drv-info temporary_target_ ps > /home/software/plplot/HEAD/build_dir/drivers/test_dyndrivers_dir/ps.driver_info
on the command line which is correct for the case when
LIBRARY_TARGET_PREFIX has been set to "temporary_target_". But when
LIBRARY_TARGET_PREFIX is set to the empty string the result is
./test-drv-info ps > /home/software/plplot/HEAD/build_dir/drivers/test_dyndrivers_dir/ps.driver_info
However, that is wrong since that command currently needs two arguments even if
one of them is empty. So instead I need the generated command to be
./test-drv-info "temporary_target_" ps > /home/software/plplot/HEAD/build_dir/drivers/test_dyndrivers_dir/ps.driver_info
or
./test-drv-info "" ps > /home/software/plplot/HEAD/build_dir/drivers/test_dyndrivers_dir/ps.driver_info
depending on how LIBRARY_TARGET_PREFIX is set.
Is it possible to implement that? If I try your (historical)
suggestion above, I get instead
./test-drv-info \"temporary_target_\" ps > /home/software/plplot/HEAD/build_dir/drivers/test_dyndrivers_dir/ps.driver_info
or
./test-drv-info \"\" ps > /home/software/plplot/HEAD/build_dir/drivers/test_dyndrivers_dir/ps.driver_info
which isn't correct since unescaped quotes are needed on the generated command
line rather than escaped ones.
If the answer is unescaped quotes are not possible on the generated
command line, that is fine since there are multiple ways to work
around that CMake limitation (e.g., by changing the test-drv-info
executable to check the number of arguments and act differently if one
of them is missing). But in light of your quote above, I just want to
make sure I am not missing some obvious way that CMake can generate
unescaped quotes on the command-line.
Alan
__________________________
Alan W. Irwin
Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).
Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________
Linux-powered Science
__________________________
More information about the CMake
mailing list