Re: [CMake] Build several targets using cmake --build dir

2013-03-15 Thread Gregoire Aujay
Hello,

Thanks for your replies. I understand that I can only 'cmake --build' one 
target at a time.
I think that the solutions you propose do not benefit from tools, like ninja, 
that have parallel build capabilities.

I'll file a feature request.

Regards,
Greg

-Original Message-
From: Nick Overdijk [mailto:n...@astrant.net] 
Sent: jeudi 14 mars 2013 19:10
To: John Drescher
Cc: Gregoire Aujay; cmake@cmake.org
Subject: Re: [CMake] Build several targets using cmake --build dir

You can only 'cmake' a single-target. If you want to have more targets, create 
more directories: for each target one.

On 2013-14-03, at 19:07:36 , John Drescher wrote:

 I use cmake 2.8.10 on windows.
 
 
 
 I would like to build several targets with cmake --build dir so  
 the underlying build tool to do parallel jobs.
 
 
 
 Currently it only seems to be possible to build one target at a time, 
 using --target .
 (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#opt:--builddir)
 
 
 
 Can someone tell me how I could achieve that with current cmake version?
 
 
 I execute more than 1 cmake --build at the same time on windows. I 
 actually do this in a program called runjobs
 
 http://www.codeproject.com/Articles/25810/Run-All-Jobs-at-Once-Utility
 
 John
 --
 
 Powered by www.kitware.com
 
 Visit other Kitware open-source projects at 
 http://www.kitware.com/opensource/opensource.html
 
 Please keep messages on-topic and check the CMake FAQ at: 
 http://www.cmake.org/Wiki/CMake_FAQ
 
 Follow this link to subscribe/unsubscribe:
 http://www.cmake.org/mailman/listinfo/cmake



--

Powered by www.kitware.com

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

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

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


Re: [CMake] Build several targets using cmake --build dir

2013-03-15 Thread J Decker
If the dependencies are already satisfied, and the cmake_make_program can
run mutliple in parallel, then it works great.

I have a cmake script that builds other cmake top level projects; and this
ends up building in parallel on visual studio.

can't do it with any other compiler I use for windows (make can be aliased
on linux to include a /j4).

On Fri, Mar 15, 2013 at 1:37 AM, Gregoire Aujay gau...@movea.com wrote:

 Hello,

 Thanks for your replies. I understand that I can only 'cmake --build' one
 target at a time.
 I think that the solutions you propose do not benefit from tools, like
 ninja, that have parallel build capabilities.

 I'll file a feature request.

 Regards,
 Greg

 -Original Message-
 From: Nick Overdijk [mailto:n...@astrant.net]
 Sent: jeudi 14 mars 2013 19:10
 To: John Drescher
 Cc: Gregoire Aujay; cmake@cmake.org
 Subject: Re: [CMake] Build several targets using cmake --build dir

 You can only 'cmake' a single-target. If you want to have more targets,
 create more directories: for each target one.

 On 2013-14-03, at 19:07:36 , John Drescher wrote:

  I use cmake 2.8.10 on windows.
 
 
 
  I would like to build several targets with cmake --build dir so
  the underlying build tool to do parallel jobs.
 
 
 
  Currently it only seems to be possible to build one target at a time,
  using --target .
  (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#opt:--builddir)
 
 
 
  Can someone tell me how I could achieve that with current cmake version?
 
 
  I execute more than 1 cmake --build at the same time on windows. I
  actually do this in a program called runjobs
 
  http://www.codeproject.com/Articles/25810/Run-All-Jobs-at-Once-Utility
 
  John
  --
 
  Powered by www.kitware.com
 
  Visit other Kitware open-source projects at
  http://www.kitware.com/opensource/opensource.html
 
  Please keep messages on-topic and check the CMake FAQ at:
  http://www.cmake.org/Wiki/CMake_FAQ
 
  Follow this link to subscribe/unsubscribe:
  http://www.cmake.org/mailman/listinfo/cmake



 --

 Powered by www.kitware.com

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

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

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

--

Powered by www.kitware.com

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

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

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

Re: [CMake] Build several targets using cmake --build dir

2013-03-15 Thread J Decker
My ugly macro looks like...  Build project macro creates targets
'build${PROJECT}' which can be depended on each other...

It writes to a output batch file, and then calls that batch.  The batch
file contains a cmake execution for that target, and then
${CMAKE_MAKE_PROGRAM} command.

---

macro( BuildProject PROJECT SOLUTION PROJECT_SOURCE INSTALL_RESULT )

  set( LAST_TARGET Build${PROJECT} )
  if( CMAKE_BINARY_DIR MATCHES ${CMAKE_BUILD_TYPE}_solution\$ )
set( INSTALL ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}_out/${PROJECT} )
set( BUILD
${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}_solution/${PROJECT} )
  else()
set( INSTALL ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}_out/${PROJECT} )
set( BUILD ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}_solution/${PROJECT}
)
  endif( CMAKE_BINARY_DIR MATCHES ${CMAKE_BUILD_TYPE}_solution\$ )
  set( ${INSTALL_RESULT} ${INSTALL} )

  FILE( MAKE_DIRECTORY ${BUILD} )

  if( MSVC )
if( NOT EXISTS ${BUILD}/${SOLUTION}.sln )
  FILE( WRITE ${BUILD}/${SOLUTION}.sln )
endif()
if( ${CMAKE_MAKE_PROGRAM} MATCHES .*[Mm][Ss][Bb]uild.* )
  build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE}
PROJECT_NAME ${SOLUTION} TARGET INSTALL )
  SET( MORE_ARGS /m:4 /v:m )
else()
build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE}
PROJECT_NAME ${SOLUTION} TARGET INSTALL.vcxproj )
endif()
SEPARATE_ARGUMENTS( BUILD_COMMAND WINDOWS_COMMAND ${BUILD_COMMAND} )
SET( BUILD_COMMAND ${BUILD_COMMAND} ${MORE_ARGS} )
SET( ADD_SOURCES  SOURCES ${BUILD}/${SOLUTION}.sln )
  else( MSVC )
build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE}
PROJECT_NAME ${SOLUTION} TARGET install )
SEPARATE_ARGUMENTS( BUILD_COMMAND UNIX_COMMAND ${BUILD_COMMAND} )
  endif( MSVC )

  if( CMAKE_TOOLCHAIN_FILE )
set( TOOLCHAIN -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} )
  endif( CMAKE_TOOLCHAIN_FILE )

  set( FAKE_ARGN1 ${ARGN})
  string (REPLACE ;   FAKE_ARGN2 ${FAKE_ARGN1})
  FILE( WRITE  ${BUILD}/makeit.bat \${CMAKE_COMMAND}\ -G
\${CMAKE_GENERATOR}\ ${TOOLCHAIN} \${PROJECT_SOURCE}\
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${INSTALL}
${FAKE_ARGN2}\n )
  string (REPLACE ;   FAKE_BUILD_COMMAND ${BUILD_COMMAND})
  FILE( APPEND ${BUILD}/makeit.bat ${FAKE_BUILD_COMMAND} )

  add_custom_target( Build${PROJECT} ALL
  COMMAND makeit.bat
  WORKING_DIRECTORY ${BUILD}
  ${ADD_SOURCES}
  )
endmacro( BuildProject )
-
usage is something like


set( PROJECT intershell )
set( EXTRA_FLAGS  -DSACK_SDK_ROOT_PATH=${SACK_SDK_ROOT_PATH} )
BuildProject( ${PROJECT} ${PROJECT}
${CMAKE_CURRENT_LIST_DIR}/../src/InterShell INTERSHELL_SDK_ROOT_PATH
${EXTRA_FLAGS} )
Add_custom_command( TARGET Build${PROJECT}
COMMAND
${INTERSHELL_SDK_ROOT_PATH}/intershell_deploy${CMAKE_EXECUTABLE_SUFFIX} -nr
WORKING_DIRECTORY ${INTERSHELL_SDK_ROOT_PATH}
)
add_dependencies( ${LAST_TARGET} Buildcore )

-

Above sourced from

https://code.google.com/p/c-system-abstraction-component-gui/source/browse/cmake_all/CMakeLists.txt
and
https://code.google.com/p/c-system-abstraction-component-gui/source/browse/cmake_all/CMakeBuild.txt




On Fri, Mar 15, 2013 at 4:37 AM, J Decker d3c...@gmail.com wrote:

 If the dependencies are already satisfied, and the cmake_make_program can
 run mutliple in parallel, then it works great.

 I have a cmake script that builds other cmake top level projects; and this
 ends up building in parallel on visual studio.

 can't do it with any other compiler I use for windows (make can be aliased
 on linux to include a /j4).


 On Fri, Mar 15, 2013 at 1:37 AM, Gregoire Aujay gau...@movea.com wrote:

 Hello,

 Thanks for your replies. I understand that I can only 'cmake --build' one
 target at a time.
 I think that the solutions you propose do not benefit from tools, like
 ninja, that have parallel build capabilities.

 I'll file a feature request.

 Regards,
 Greg

 -Original Message-
 From: Nick Overdijk [mailto:n...@astrant.net]
 Sent: jeudi 14 mars 2013 19:10
 To: John Drescher
 Cc: Gregoire Aujay; cmake@cmake.org
 Subject: Re: [CMake] Build several targets using cmake --build dir

 You can only 'cmake' a single-target. If you want to have more targets,
 create more directories: for each target one.

 On 2013-14-03, at 19:07:36 , John Drescher wrote:

  I use cmake 2.8.10 on windows.
 
 
 
  I would like to build several targets with cmake --build dir so
  the underlying build tool to do parallel jobs.
 
 
 
  Currently it only seems to be possible to build one target at a time,
  using --target .
  (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#opt:--builddir)
 
 
 
  Can someone tell me how I could achieve that with current cmake
 version?
 
 
  I execute more than 1 cmake --build at the same time on windows. I
  actually do this in a program called runjobs
 
  http://www.codeproject.com/Articles/25810/Run-All-Jobs-at-Once

Re: [CMake] Build several targets using cmake --build dir

2013-03-15 Thread Gregoire Aujay
Hello,

Thanks again.
In my case I cannot use your script. I have the constraint to be 'outside 
cmake' so I do not know any of internal values like CMAKE_MAKE_PROGRAM. I can 
only call 'cmake --build' to build stuff.

I filed a feature request : http://www.cmake.org/Bug/view.php?id=14014


Regards,
Gregoire

From: J Decker [mailto:d3c...@gmail.com]
Sent: vendredi 15 mars 2013 12:45
To: Gregoire Aujay
Cc: Nick Overdijk; John Drescher; cmake@cmake.org
Subject: Re: [CMake] Build several targets using cmake --build dir

My ugly macro looks like...  Build project macro creates targets 
'build${PROJECT}' which can be depended on each other...

It writes to a output batch file, and then calls that batch.  The batch file 
contains a cmake execution for that target, and then ${CMAKE_MAKE_PROGRAM} 
command.

---

macro( BuildProject PROJECT SOLUTION PROJECT_SOURCE INSTALL_RESULT )

  set( LAST_TARGET Build${PROJECT} )
  if( CMAKE_BINARY_DIR MATCHES ${CMAKE_BUILD_TYPE}_solution\$ )
set( INSTALL ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}_out/${PROJECT} )
set( BUILD ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}_solution/${PROJECT} )
  else()
set( INSTALL ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}_out/${PROJECT} )
set( BUILD ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}_solution/${PROJECT} )
  endif( CMAKE_BINARY_DIR MATCHES ${CMAKE_BUILD_TYPE}_solution\$ )
  set( ${INSTALL_RESULT} ${INSTALL} )

  FILE( MAKE_DIRECTORY ${BUILD} )

  if( MSVC )
if( NOT EXISTS ${BUILD}/${SOLUTION}.sln )
  FILE( WRITE ${BUILD}/${SOLUTION}.sln )
endif()
if( ${CMAKE_MAKE_PROGRAM} MATCHES .*[Mm][Ss][Bb]uild.* )
 build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE} 
PROJECT_NAME ${SOLUTION} TARGET INSTALL )
  SET( MORE_ARGS /m:4 /v:m )
else()
 build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE} 
PROJECT_NAME ${SOLUTION} TARGET INSTALL.vcxproj )
endif()
SEPARATE_ARGUMENTS( BUILD_COMMAND WINDOWS_COMMAND ${BUILD_COMMAND} )
SET( BUILD_COMMAND ${BUILD_COMMAND} ${MORE_ARGS} )
SET( ADD_SOURCES  SOURCES ${BUILD}/${SOLUTION}.sln )
  else( MSVC )
build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE} PROJECT_NAME 
${SOLUTION} TARGET install )
SEPARATE_ARGUMENTS( BUILD_COMMAND UNIX_COMMAND ${BUILD_COMMAND} )
  endif( MSVC )

  if( CMAKE_TOOLCHAIN_FILE )
set( TOOLCHAIN -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} )
  endif( CMAKE_TOOLCHAIN_FILE )

  set( FAKE_ARGN1 ${ARGN})
  string (REPLACE ;   FAKE_ARGN2 ${FAKE_ARGN1})
  FILE( WRITE  ${BUILD}/makeit.bat \${CMAKE_COMMAND}\ -G 
\${CMAKE_GENERATOR}\ ${TOOLCHAIN} \${PROJECT_SOURCE}\ 
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${INSTALL} 
${FAKE_ARGN2}\n )
  string (REPLACE ;   FAKE_BUILD_COMMAND ${BUILD_COMMAND})
  FILE( APPEND ${BUILD}/makeit.bat ${FAKE_BUILD_COMMAND} )

  add_custom_target( Build${PROJECT} ALL
  COMMAND makeit.bat
 WORKING_DIRECTORY ${BUILD}
  ${ADD_SOURCES}
  )
endmacro( BuildProject )
-
usage is something like


set( PROJECT intershell )
set( EXTRA_FLAGS  -DSACK_SDK_ROOT_PATH=${SACK_SDK_ROOT_PATH} )
BuildProject( ${PROJECT} ${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../src/InterShell 
INTERSHELL_SDK_ROOT_PATH ${EXTRA_FLAGS} )
Add_custom_command( TARGET Build${PROJECT}
COMMAND 
${INTERSHELL_SDK_ROOT_PATH}/intershell_deploy${CMAKE_EXECUTABLE_SUFFIX} -nr
WORKING_DIRECTORY ${INTERSHELL_SDK_ROOT_PATH}
)
add_dependencies( ${LAST_TARGET} Buildcore )

-

Above sourced from

https://code.google.com/p/c-system-abstraction-component-gui/source/browse/cmake_all/CMakeLists.txt
and
https://code.google.com/p/c-system-abstraction-component-gui/source/browse/cmake_all/CMakeBuild.txt




On Fri, Mar 15, 2013 at 4:37 AM, J Decker 
d3c...@gmail.commailto:d3c...@gmail.com wrote:
If the dependencies are already satisfied, and the cmake_make_program can run 
mutliple in parallel, then it works great.

I have a cmake script that builds other cmake top level projects; and this ends 
up building in parallel on visual studio.

can't do it with any other compiler I use for windows (make can be aliased on 
linux to include a /j4).

On Fri, Mar 15, 2013 at 1:37 AM, Gregoire Aujay 
gau...@movea.commailto:gau...@movea.com wrote:
Hello,

Thanks for your replies. I understand that I can only 'cmake --build' one 
target at a time.
I think that the solutions you propose do not benefit from tools, like ninja, 
that have parallel build capabilities.

I'll file a feature request.

Regards,
Greg

-Original Message-
From: Nick Overdijk [mailto:n...@astrant.netmailto:n...@astrant.net]
Sent: jeudi 14 mars 2013 19:10
To: John Drescher
Cc: Gregoire Aujay; cmake@cmake.orgmailto:cmake@cmake.org
Subject: Re: [CMake] Build several targets using cmake --build dir

You can only 'cmake' a single-target. If you want to have more targets, create 
more directories

[CMake] Build several targets using cmake --build dir

2013-03-14 Thread Gregoire Aujay
Hello,

I use cmake 2.8.10 on windows.

I would like to build several targets with cmake --build dir so  the 
underlying build tool to do parallel jobs.

Currently it only seems to be possible to build one target at a time, using 
--target . (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#opt:--builddir)

Can someone tell me how I could achieve that with current cmake version?

Regards,
Greg

--

Powered by www.kitware.com

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

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

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

Re: [CMake] Build several targets using cmake --build dir

2013-03-14 Thread John Drescher
 I use cmake 2.8.10 on windows.



 I would like to build several targets with cmake --build dir so  the
 underlying build tool to do parallel jobs.



 Currently it only seems to be possible to build one target at a time, using
 --target .
 (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#opt:--builddir)



 Can someone tell me how I could achieve that with current cmake version?


I execute more than 1 cmake --build at the same time on windows. I
actually do this in a program called runjobs

http://www.codeproject.com/Articles/25810/Run-All-Jobs-at-Once-Utility

John
--

Powered by www.kitware.com

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

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

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


Re: [CMake] Build several targets using cmake --build dir

2013-03-14 Thread Nick Overdijk
You can only 'cmake' a single-target. If you want to have more targets, create 
more directories: for each target one.

On 2013-14-03, at 19:07:36 , John Drescher wrote:

 I use cmake 2.8.10 on windows.
 
 
 
 I would like to build several targets with cmake --build dir so  the
 underlying build tool to do parallel jobs.
 
 
 
 Currently it only seems to be possible to build one target at a time, using
 --target .
 (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#opt:--builddir)
 
 
 
 Can someone tell me how I could achieve that with current cmake version?
 
 
 I execute more than 1 cmake --build at the same time on windows. I
 actually do this in a program called runjobs
 
 http://www.codeproject.com/Articles/25810/Run-All-Jobs-at-Once-Utility
 
 John
 --
 
 Powered by www.kitware.com
 
 Visit other Kitware open-source projects at 
 http://www.kitware.com/opensource/opensource.html
 
 Please keep messages on-topic and check the CMake FAQ at: 
 http://www.cmake.org/Wiki/CMake_FAQ
 
 Follow this link to subscribe/unsubscribe:
 http://www.cmake.org/mailman/listinfo/cmake

--

Powered by www.kitware.com

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

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

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