MantisBT - CMake
View Issue Details
0010735CMakeCMakepublic2010-05-19 19:252011-01-11 18:05
hsor001 
David Cole 
normalminoralways
closedduplicate 
CMake-2-8 
 
0010735: Passing Paths containing colons through ExternalProject_Add's CMAKE_ARGS argument

This is only relevant to the first argument passed through the CMAKE_ARGS argument of ExternalProject_Add. If the first argument passed is a path (for example) and this path contains a colon, as in 'd:/path/to/somewhere' all that will be passed through is 'd:'

I have an example that I have put together to illustrate this problem. If you decompress and untar the attached tar.gz file you should be able to see for yourself. I have highlighted the message output by wrapping the relevant messages in ??????????????????????? so it should make things easy to spot. also if you execute the application that is built it will also display the problem paths.

I won't bother myself explaining to you how to run cmake, but if I have done anything wrong I am happy to help.

I have tested this on windows only, as this is the place where I use colons in paths.
No tags attached.
duplicate of 0009963closed David Cole Passing command-line arguments to ExternalProject truncates variables 
gz externalproject_add_test.tar.gz (1,154) 2010-05-19 19:25
https://public.kitware.com/Bug/file/3130/externalproject_add_test.tar.gz
Issue History
2010-05-19 19:25hsor001New Issue
2010-05-19 19:25hsor001File Added: externalproject_add_test.tar.gz
2010-05-19 21:32Bill HoffmanStatusnew => assigned
2010-05-19 21:32Bill HoffmanAssigned To => David Cole
2010-06-18 17:24David ColeNote Added: 0021095
2010-06-18 17:24David ColeStatusassigned => resolved
2010-06-18 17:24David ColeResolutionopen => unable to reproduce
2010-06-20 19:25hsor001Note Added: 0021100
2010-06-20 19:25hsor001Statusresolved => feedback
2010-06-20 19:25hsor001Resolutionunable to reproduce => reopened
2010-06-20 19:34hsor001Note Added: 0021101
2010-06-22 11:23David ColeNote Added: 0021121
2010-07-23 06:10David ColeRelationship addedduplicate of 0009963
2010-09-08 17:46David ColeNote Added: 0022144
2010-09-08 17:46David ColeStatusfeedback => resolved
2010-09-08 17:46David ColeResolutionreopened => duplicate
2010-09-10 19:00David ColeNote Added: 0022186
2011-01-11 18:05David ColeNote Added: 0024603
2011-01-11 18:05David ColeStatusresolved => closed

Notes
(0021095)
David Cole   
2010-06-18 17:24   
I get the following output:

2> -- ??????????????????????????????
2> -- FOO PATH_1: D:/I/like/this/:path/foo_here
2> -- FOO PATH_2: F:/this/path/is/a/backup/foo_here
2> -- ??????????????????????????????

which is what it should be, right?

What version of CMake were you reporting this for? It works with 2.8.1 and later...
(0021100)
hsor001   
2010-06-20 19:25   
Your output is correct, but mine is different I get the following (I have included the entire output here from a windows 7 visual studio command prompt):

D:\development\cmiss\temp\externalproject_add_test\build>"c:\Program Files\CMake 2.8.2\bin\cmake.exe" -G "NMake Makefiles" ../
-- The C compiler identification is MSVC
-- The CXX compiler identification is MSVC
-- Check for CL compiler version
-- Check for CL compiler version - 1500
-- Check if this is a free VC compiler
-- Check if this is a free VC compiler - no
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: D:/development/cmiss/temp/externalproject_add_test/build

D:\development\cmiss\temp\externalproject_add_test\build>nmake

Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.

Scanning dependencies of target build_foo
[ 0%] Creating directories for 'build_foo'
[ 0%] Performing download step (verify and extract) for 'build_foo'
-- verifying file...
     file='D:/development/cmiss/temp/externalproject_add_test/foo_project/foo_project.tar.gz'
-- verifying file... warning: did not verify file - no URL_MD5 checksum argument? corrupt file?
-- extracting...
     src='D:/development/cmiss/temp/externalproject_add_test/foo_project/foo_project.tar.gz'
     dst='D:/development/cmiss/temp/externalproject_add_test/build/src/build_foo'
-- extracting... [tar xfz]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done
[ 0%] No update step for 'build_foo'
[ 0%] No patch step for 'build_foo'
[ 0%] Performing configure step for 'build_foo'
-- The C compiler identification is MSVC
-- The CXX compiler identification is MSVC
-- Check for CL compiler version
-- Check for CL compiler version - 1500
-- Check if this is a free VC compiler
-- Check if this is a free VC compiler - no
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- ??????????????????????????????
-- FOO PATH_1: D:
-- FOO PATH_2: F:/this/path/is/a/backup/foo_here
-- ??????????????????????????????
-- Configuring done
-- Generating done
-- Build files have been written to: D:/development/cmiss/temp/externalproject_add_test/build/src/build_foo-build
[ 0%] Performing build step for 'build_foo'

Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.

Scanning dependencies of target foo_it
[100%] Building CXX object CMakeFiles/foo_it.dir/main.cpp.obj
main.cpp
Linking CXX executable foo_it.exe
[100%] Built target foo_it
[ 0%] Performing install step for 'build_foo'

Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.

[100%] Built target foo_it
Install the project...
-- Install configuration: "Debug"
-- Installing: D:/development/cmiss/temp/externalproject_add_test/build/foo_it.exe
[ 0%] Completed 'build_foo'
[100%] Built target build_foo
(0021101)
hsor001   
2010-06-20 19:34   
I do get the correct output however when using visual studio, but not when using nmake. Sorry I didn't explain it fully on the first post but I didn't think you could use visual studio with external project, or rather I didn't think it was sensible to. The above note should explain exactly how I manifest this issue.
(0021121)
David Cole   
2010-06-22 11:23   
This is nmake (or maybe more makes) specific and requires double quotes in the generated makefile. The fix for this is going to be to add ":" as a "quote-able" character in:

CMake/Source/kwsys/System.c
probably in the kwsysSystem_Shell__CharNeedsQuotesOnWindows function

You can try that on a local build of CMake to see if it fixes this issue for you. The code to fix it is in a lower-level kwsys source file, which is shared by other projects in addition to CMake. I can commit a fix to the main kwsys CVS repo after the CMake 2.8.2 release. After that, it will automatically be picked up for the following CMake release...
(0022144)
David Cole   
2010-09-08 17:46   
dup of 9963 -- when that one is fixed, this one will be too
(0022186)
David Cole   
2010-09-10 19:00   
Related issue 0009963 is now resolved; fixed in CMake 'next'; this one should be too...
(0024603)
David Cole   
2011-01-11 18:05   
Closing resolved issues that have not been updated in more than 3 months.