On 04.09.2019 11:55, Edoardo Pasca wrote:
Dear all, 

I'm using ExternalProjectAdd to build an external package. 

On the CONFIGURE_COMMAND I have to pass some variables to the configure script in this form:

configure CPPFLAGS="-I/dir/include -L/dir/lib" 

To do this I use 

CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env ${CMAKE_BINARY_DIR}/configure CPPFLAGS="-I/dir/include -L/dir/lib" 

However, when cmake issues that command (you can see that with make VERBOSE=1) it wraps the CPPFLAGS parameters with quotation marks (as below) and the configure script fails

configure "CPPFLAGS=\"-I/dir/include -L/dir/lib\""

Below you can find a minimal CMakeLists.txt to test this. 

I'd appreciate any help on how I'd remove those quotation marks.
 
Thanks

Edo

What I do is let CMake handle this itself by defining a (list) variable for the configure command:

set(cmd "${CMAKE_BINARY_DIR}/configure")
list(APPEND cmd "CPPFLAGS=-I/dir/include -L/dir/lib")
ExternalProject_Add(...
  CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env ${cmd}
  ...)

Since cmd is a list, CMake knows that the -L/dir/lib belongs to the CPPFLAGS=-I/dir/include part, and puts double quotes around the entire thing, e.g. the actual command line will look something like this:

<xxx>/configure "CPPFLAG=-Idir/include -L/dir/lib"

This works with GNU autoconf. I've found that in general, dealing with quoting in ExternalProject_Add is a gigantic pain, so if the method above is not sufficient, I use configure_file or file(WRITE) to generate a shell script (Linux) or batch file (Windows) with the correct parameters and call that instead.

With kind regards,
Eric Dönges

Dr. Eric Dönges
Senior Software Engineer

MVTec Software GmbH | Arnulfstr. 205 | 80634 Munich | Germany
doen...@mvtec.com | Tel: +49 89 457 695-0 | www.mvtec.com

 Sign up for our MVTec Newsletter!

Geschäftsführer: Dr. Wolfgang Eckstein, Dr. Olaf Munkelt
Amtsgericht München HRB 114695

 

MVTec Software GmbH Logo
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to