[CMake] ExternalProject_add on windows 7 passing arguments with colons

Hugh Sorby h.sorby at auckland.ac.nz
Wed May 5 23:17:08 EDT 2010


I am using ExternalProject_add on windows 7 and I am having difficulty 
passing in some arguments.  I have mocked up an example showing my 
problem.  To summarise:

When I pass a path e.g. "D:/somehere/cool" through with the CMAKE_ARGS 
args I get out just "D:".

has anyone else come across this?

My example:
[directory layout]
-foo_master
 \-CMakeLists.txt <- see Appendix 1.
  |-foo_project
    \-foo_project.tar.gz <- see Appendix 2.

-foo_master-build

 From foo_master-build I run (in a visual studio command window)
  cmake -G "NMake Makefiles"  ..\foo_master
  nmake

The undersirable thing is my foo_it application is installed into
  d:\bin\foo_it.exe
rather than
  d:\develoopment\foo_install_here\bin\foo_it.exe

Appendix 1. - CMakeList.txt
=============================================
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )

PROJECT( foo_master )

INCLUDE( ExternalProject )

SET( PLATFORM_BUILD_COMMAND nmake )
SET( PLATFORM_INSTALL_COMMAND nmake install )

# Define FOO_INSTALL_PREFIX somewhere useful
SET( FOO_CMAKE_ARGS -DFOO_INSTALL_PREFIX=D:/development/foo_install_here )
SET( FOO_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/foo_project )

ExternalProject_Add( build_foo
    PREFIX ${CMAKE_CURRENT_BINARY_DIR}
    #--Download step--------------
    URL ${FOO_SOURCE_DIR}/foo_project.tar.gz
    #--Update/Patch step----------
    #--Configure step-------------
    CMAKE_ARGS ${FOO_CMAKE_ARGS}
    #--Build step-----------------
    BUILD_COMMAND ${PLATFORM_BUILD_COMMAND}
    #--Install step---------------
    INSTALL_COMMAND ${PLATFORM_INSTALL_COMMAND} )

=============================================

Appendix 2: - Contents of foo_project.tar.gz, CMakeLists.txt and main.cpp
=============================================

CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )

PROJECT( foo )

MESSAGE( STATUS "FOO INSTALL PREFIX: ${FOO_INSTALL_PREFIX}" )
SET( FOO_INSTALL_PREFIX ${FOO_INSTALL_PREFIX} CACHE PATH "Foo install dir" )

ADD_EXECUTABLE( foo_it main.cpp )

INSTALL( TARGETS foo_it DESTINATION ${FOO_INSTALL_PREFIX}/bin )

=============================================

#include <stdio.h>

int main()
{
    printf( "\nExternalProject_Add text parsing test.\n" );
    return 0;
}

=============================================

I have attached the tar.gz file in case anybody wants to try it out.

Cheers,
Hugh.



-------------- next part --------------
A non-text attachment was scrubbed...
Name: foo_project.tar.gz
Type: application/gzip
Size: 399 bytes
Desc: not available
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100506/f8f08f6f/attachment.bin>


More information about the CMake mailing list