Re: Modern superbuild template including support for

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Knox, Kent
> I'm looking for a template or example project that shows the how to
> setup a cmake-based project in the cleanest and simplest way (i.e.
> using all the latest features of 3.3 release) and with support for the
> following build features:

I waited a few days to see if anybody else would volunteer their project,
but I'm happy to ask for critique of the superbuild approach I set up
recently.  This is for an opencl sparse matrix library:
https://github.com/clMathLibraries/clSPARSE
Build instructions:
https://github.com/clMathLibraries/clSPARSE/wiki/Build

I think I only require features up to 2.8.12.  
I have 2 dependencies that I configure/build with the superbuild:
boost & googlemock.  The main clsparse library is also set up as an
external dependency, so that it could be used independently.

The root CMakeLists.txt file defines the superbuild, the cmake/External*.cmake
files house the ExternalProject_Add() commands, and the library/CMakeLists.txt
defines the library build.

Would welcome comments/critiques from anybody with time.

Kent
----------------------------------------------------------------------
Message: 6
Date: Mon, 17 Aug 2015 10:43:46 -0400
From: Taylor Braun-Jones <[hidden email]>
To: cmake <[hidden email]>
Subject: [CMake] Modern superbuild template including support for
        module  dependencies
Message-ID:
        <[hidden email]>
Content-Type: text/plain; charset=UTF-8

Hi all,

I'm looking for a template or example project that shows the how to
setup a cmake-based project in the cleanest and simplest way (i.e.
using all the latest features of 3.3 release) and with support for the
following build features:

- Superbuild mode that can be turned on or off (on by default)

- Simple system for defining modules (libraries that get built either
as static or dynamic libraries) and their dependencies.

- install target that works with good default behaviors so that the
CMakeLists.txt for modules and applications need minimal extra
configuration. Should work in both superbuild mode (the project and
all external projects get installed to the same
CMAKE_INSTALL_PREFIX/DESTDIR when invoked at the top superbuild level)
and in non-superbuild mode

I've seen many examples of projects like this but my impression is
that they have been around since long before the latest CMake releases
and therefore weren't designed to take advantage of all the latest
CMake features. My current attempt to setup a cmake-based build with
these features is based on the MITK cmake build system[1] since it's
something I was already familiar with. I have something that mostly
works, but the number of lines of cmake code to make it all happen
with simple interfaces like mitk_create_module, mitk_create_executable
seems more than should be necessary which is going to make switching
to CMake harder for me to "sell" to my team.

I found this very simplistic CMake project example[2] but the
resulting CMakeLists.txt to build an executable in that project looks
like this:

find_package (Threads REQUIRED)

set (Boost_USE_STATIC_LIBS ON)
# set (Boost_NO_SYSTEM_PATHS ON)
find_package (Boost 1.55.0 REQUIRED COMPONENTS date_time filesystem system)

include_directories (${Boost_INCLUDE_DIRS})

add_executable (blah
  main.cpp)

target_link_libraries (blah
  ${Boost_LIBRARIES}
  ${CMAKE_THREAD_LIBS_INIT})


Whereas I'm looking for something that would allow me to write
something like this:

xxx_add_executable(blah
  PACKAGE_DEPENDS Boost
  DEPENDS mymodule
  main.cpp)

(or some other similarly simple interface)

Thanks in advance,
Taylor

[1] https://github.com/MITK/MITK
[2] https://github.com/Sarcasm/cmake-superbuild
--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Andrey Pokrovskiy
Such approach doesn't work with IDE. For example, when I open main
CMakeLists.txt in Qt Creator I only see two *.cmake files. Superbuilds
use ExternalProject_Add() which kills a lot CMake benefits when used
for CMake project from CMake project.

On Thu, Aug 20, 2015 at 9:28 AM, Knox, Kent <[hidden email]> wrote:

>> I'm looking for a template or example project that shows the how to
>> setup a cmake-based project in the cleanest and simplest way (i.e.
>> using all the latest features of 3.3 release) and with support for the
>> following build features:
>
> I waited a few days to see if anybody else would volunteer their project,
> but I'm happy to ask for critique of the superbuild approach I set up
> recently.  This is for an opencl sparse matrix library:
> https://github.com/clMathLibraries/clSPARSE
> Build instructions:
> https://github.com/clMathLibraries/clSPARSE/wiki/Build
>
> I think I only require features up to 2.8.12.
> I have 2 dependencies that I configure/build with the superbuild:
> boost & googlemock.  The main clsparse library is also set up as an
> external dependency, so that it could be used independently.
>
> The root CMakeLists.txt file defines the superbuild, the cmake/External*.cmake
> files house the ExternalProject_Add() commands, and the library/CMakeLists.txt
> defines the library build.
>
> Would welcome comments/critiques from anybody with time.
>
> Kent
> ----------------------------------------------------------------------
> Message: 6
> Date: Mon, 17 Aug 2015 10:43:46 -0400
> From: Taylor Braun-Jones <[hidden email]>
> To: cmake <[hidden email]>
> Subject: [CMake] Modern superbuild template including support for
>         module  dependencies
> Message-ID:
>         <[hidden email]>
> Content-Type: text/plain; charset=UTF-8
>
> Hi all,
>
> I'm looking for a template or example project that shows the how to
> setup a cmake-based project in the cleanest and simplest way (i.e.
> using all the latest features of 3.3 release) and with support for the
> following build features:
>
> - Superbuild mode that can be turned on or off (on by default)
>
> - Simple system for defining modules (libraries that get built either
> as static or dynamic libraries) and their dependencies.
>
> - install target that works with good default behaviors so that the
> CMakeLists.txt for modules and applications need minimal extra
> configuration. Should work in both superbuild mode (the project and
> all external projects get installed to the same
> CMAKE_INSTALL_PREFIX/DESTDIR when invoked at the top superbuild level)
> and in non-superbuild mode
>
> I've seen many examples of projects like this but my impression is
> that they have been around since long before the latest CMake releases
> and therefore weren't designed to take advantage of all the latest
> CMake features. My current attempt to setup a cmake-based build with
> these features is based on the MITK cmake build system[1] since it's
> something I was already familiar with. I have something that mostly
> works, but the number of lines of cmake code to make it all happen
> with simple interfaces like mitk_create_module, mitk_create_executable
> seems more than should be necessary which is going to make switching
> to CMake harder for me to "sell" to my team.
>
> I found this very simplistic CMake project example[2] but the
> resulting CMakeLists.txt to build an executable in that project looks
> like this:
>
> find_package (Threads REQUIRED)
>
> set (Boost_USE_STATIC_LIBS ON)
> # set (Boost_NO_SYSTEM_PATHS ON)
> find_package (Boost 1.55.0 REQUIRED COMPONENTS date_time filesystem system)
>
> include_directories (${Boost_INCLUDE_DIRS})
>
> add_executable (blah
>   main.cpp)
>
> target_link_libraries (blah
>   ${Boost_LIBRARIES}
>   ${CMAKE_THREAD_LIBS_INIT})
>
>
> Whereas I'm looking for something that would allow me to write
> something like this:
>
> xxx_add_executable(blah
>   PACKAGE_DEPENDS Boost
>   DEPENDS mymodule
>   main.cpp)
>
> (or some other similarly simple interface)
>
> Thanks in advance,
> Taylor
>
> [1] https://github.com/MITK/MITK
> [2] https://github.com/Sarcasm/cmake-superbuild
> --
>
> 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:
> http://public.kitware.com/mailman/listinfo/cmake
--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Knox, Kent
I can vouch that the superbuild project works fine both for visual studio and for xcode.  Using visual studio as an example, you generate a visual studio solution which downloads and compiles all dependencies, inclulding the library.  After the initial build, you just use the solution file generated for the library thereafter.  I've not tested QT Creater, but I'll see if I can verify your difficulties next week.
________________________________________
From: Andrey Pokrovskiy [[hidden email]]
Sent: Thursday, August 20, 2015 2:29 PM
To: Knox, Kent
Cc: [hidden email]
Subject: Re: [CMake] Modern superbuild template including support for

Such approach doesn't work with IDE. For example, when I open main
CMakeLists.txt in Qt Creator I only see two *.cmake files. Superbuilds
use ExternalProject_Add() which kills a lot CMake benefits when used
for CMake project from CMake project.

--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Andrey Pokrovskiy
Hm, I don't understand how that possibly could work (maybe there some
explicit support for that in the project generator for MSVS).
And are you able to browse the source code of all your dependencies
(that were downloaded)?

On Thu, Aug 20, 2015 at 1:11 PM, Knox, Kent <[hidden email]> wrote:

> I can vouch that the superbuild project works fine both for visual studio and for xcode.  Using visual studio as an example, you generate a visual studio solution which downloads and compiles all dependencies, inclulding the library.  After the initial build, you just use the solution file generated for the library thereafter.  I've not tested QT Creater, but I'll see if I can verify your difficulties next week.
> ________________________________________
> From: Andrey Pokrovskiy [[hidden email]]
> Sent: Thursday, August 20, 2015 2:29 PM
> To: Knox, Kent
> Cc: [hidden email]
> Subject: Re: [CMake] Modern superbuild template including support for
>
> Such approach doesn't work with IDE. For example, when I open main
> CMakeLists.txt in Qt Creator I only see two *.cmake files. Superbuilds
> use ExternalProject_Add() which kills a lot CMake benefits when used
> for CMake project from CMake project.
>
--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Klaim - Joël Lamotte
In reply to this post by Knox, Kent


On 20 August 2015 at 22:11, Knox, Kent <[hidden email]> wrote:
I can vouch that the superbuild project works fine both for visual studio and for xcode.  Using visual studio as an example, you generate a visual studio solution which downloads and compiles all dependencies, inclulding the library.  After the initial build, you just use the solution file generated for the library thereafter.  I've not tested QT Creater, but I'll see if I can verify your difficulties next week.

I had major pains managing the dependencies of my main project via copy/pasting specific versions of the sources of my dependencies in a dependency repository.
(which don't work well when updating and on other platforms than windows)
Also note that not all my dependencies uses CMake so some of these are major pains.
This version worked well enough until I tried to make it work on linux and I also have plans to change some dependencies and it's a major pain to update correctly.
There were other issues but less important than that.

So now I am trying to setup the something similar but with ExternalProject_Add() : https://bitbucket.org/klaim/netrush-dependencies-cmake
This one is a work in progress but the dependencies currently does build on Windows and Linux.
What's missing:
 - I want to setup package config files in the install directory, but I am having major troubles with this because;
 - the package file will need to provide imported targets to my dependencies under a specific namespace (like Qt does);
 - gtest and protobuf do not have install targets ( ;O; ) so I have to setup more stuffs so that the package config will have the right paths;
 - once this dependencies install works with my current version of my project, I will need to 

My experience so far: the copy pasting strategy ends up easier to setup than using externaldependencies, because you don't have to think with 2-steps download-build-instal&link;
I am tempted to stop my efforts on this now, but I still have a few bits of energy left. Also I seem close to the end and couldn't evaluate the actual benefits (which I first assumed
would have been ease of first-setup/update/patch/totally-change).
I also can't pay someone to setup and manage the dependencies, like we have in the company where I work (so far I was talking about my biggest personal project which is still quite massive).
Any help is welcome of course, if you have time to kill on this.



--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Klaim - Joël Lamotte
In reply to this post by Andrey Pokrovskiy

On 21 August 2015 at 00:35, Andrey Pokrovskiy <[hidden email]> wrote:
And are you able to browse the source code of all your dependencies
(that were downloaded)?

I forgot to say that indeed if you use ExternalDependencies OR any non-source based way of linking your dependencies to your project,
you don't get dependencies code in your IDE indeed.

It's the major reason I started with copy/pasting code of my dependencies in my dependency repository.
My dayjob uses the other aproach where you have only the code of your project in your IDE and must manually add dependencies
targets when you need to. Most of the time it's not a problem but I suspect it depends a lot on the stability of the project.

Not sure which is better, frankly, I am exploring ways to manage my dependencies in a fast way, and so far it's only major pain as long as I am targetting
more than one platform and using C++.
(note: no current dependency management tools attempts I tried solve my problems because they are all too intrusive and assume too much)

Maybe a file format to represent any library in a platform-independant way would help. CMake is really describing a process to build a library, not the library itself
and not in a way that allow any other tool to benefit from the library representation. There was discussions about this in the beginning of the year apparently
but if my memory is correct it have been abandoned.



--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Klaim - Joël Lamotte

On 21 August 2015 at 00:43, Klaim - Joël Lamotte <[hidden email]> wrote:
On 21 August 2015 at 00:35, Andrey Pokrovskiy <[hidden email]> wrote:
And are you able to browse the source code of all your dependencies
(that were downloaded)?

I forgot to say that indeed if you use ExternalDependencies OR any non-source based way of linking your dependencies to your project,
you don't get dependencies code in your IDE indeed.

By the way there is another thing I didn't try because it don't work easily with dependencies not using cmake:
 - use externaldependencies but only to download the sources or binaries of the dependencies, deactivate all other steps (really it should be a separate function)
 - use add_subdirectory() to add the dependencies or other solutions appropriate for each dependency.



--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Knox, Kent
In reply to this post by Andrey Pokrovskiy
>And are you able to browse the source code of all your dependencies
>(that were downloaded)?
When you open the generated solution file to the superbuild, targets are made for all dependencies (in my case: boost, gmock, clsparse).  From the superbuild view, you can not browse the source of the dependencies (the source is not even present until you build the first time).  You build the solution, cmake merrily downloads the code for the dependencies (aside from clsparse that lives in the same repository) and builds the dependencies according the build instructions in the cmake/External*.cmake files.  After the first build of the superbuild, close the superbuild solution as it's job is done.

Open the solution file for the clsparse library, which was generated as part of the superbuild and is the 'meat' of the project. This solution file contains browse-able source code to all the files in the clsparse project.  The Boost and gmock files are not directly browse-able (i.e. files listed in the solution/project), because do not want to rebuild dependencies if rebuilding the clsparse project (the dependencies change very seldom).  However, visual studio's intellisense does start indexing boost and gmock because they are included in clsparse like any other header file or library, so they become 'browseable' through the IDE.  I believe the same behavior happens with xcode.  

________________________________________
From: Andrey Pokrovskiy [[hidden email]]
Sent: Thursday, August 20, 2015 5:35 PM
To: Knox, Kent
Cc: [hidden email]
Subject: Re: [CMake] Modern superbuild template including support for

Hm, I don't understand how that possibly could work (maybe there some
explicit support for that in the project generator for MSVS).
And are you able to browse the source code of all your dependencies
(that were downloaded)?
--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Andrey Pokrovskiy
> After the first build of the superbuild, close the superbuild solution as it's job is done.
> ...
> Open the solution file for the clsparse library, which was generated as part of the superbuild
> and is the 'meat' of the project.

Heh, that's exactly what I meant - superbuilds don't work with IDE
(meaning that CMake doesn't adds anything valuable in terms of
integration of several CMake based packages here).
You are still working with each sub-project (solution) individually as
it was an independent project.
For that reason I try to use add_subdirectory() for CMake-based
3rd-party dependencies (some make it incredibly hard though).
Maybe I didn't worked with CMake that much, but I consider superbuilds
a "hackish" solution. I know there is no a better one, though :)


On Thu, Aug 20, 2015 at 4:30 PM, Knox, Kent <[hidden email]> wrote:

>>And are you able to browse the source code of all your dependencies
>>(that were downloaded)?
> When you open the generated solution file to the superbuild, targets are made for all dependencies (in my case: boost, gmock, clsparse).  From the superbuild view, you can not browse the source of the dependencies (the source is not even present until you build the first time).  You build the solution, cmake merrily downloads the code for the dependencies (aside from clsparse that lives in the same repository) and builds the dependencies according the build instructions in the cmake/External*.cmake files.  After the first build of the superbuild, close the superbuild solution as it's job is done.
>
> Open the solution file for the clsparse library, which was generated as part of the superbuild and is the 'meat' of the project. This solution file contains browse-able source code to all the files in the clsparse project.  The Boost and gmock files are not directly browse-able (i.e. files listed in the solution/project), because do not want to rebuild dependencies if rebuilding the clsparse project (the dependencies change very seldom).  However, visual studio's intellisense does start indexing boost and gmock because they are included in clsparse like any other header file or library, so they become 'browseable' through the IDE.  I believe the same behavior happens with xcode.
>
> ________________________________________
> From: Andrey Pokrovskiy [[hidden email]]
> Sent: Thursday, August 20, 2015 5:35 PM
> To: Knox, Kent
> Cc: [hidden email]
> Subject: Re: [CMake] Modern superbuild template including support for
>
> Hm, I don't understand how that possibly could work (maybe there some
> explicit support for that in the project generator for MSVS).
> And are you able to browse the source code of all your dependencies
> (that were downloaded)?
--

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:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Modern superbuild template including support for

Knox, Kent
I think I have a different perspective.  I don't want Boost or gmock to be considered a part of clsparse in any visible way (I don't want them in my IDE); I want them truly separate and external.  I like cmake to download and build dependencies for me in an automated fashion, but I don't want the requirement to either check in the source of the dependency, or to set up my git repository to use submodules.  I shouldn't rebuild dependencies when I rebuild my project.  Superbuilds have been working quite nicely for me in these ways.  

-----Original Message-----
From: Andrey Pokrovskiy [mailto:[hidden email]]
Sent: Thursday, August 20, 2015 7:31 PM
To: Knox, Kent
Cc: [hidden email]
Subject: Re: [CMake] Modern superbuild template including support for

> After the first build of the superbuild, close the superbuild solution as it's job is done.
> ...
> Open the solution file for the clsparse library, which was generated
> as part of the superbuild and is the 'meat' of the project.

Heh, that's exactly what I meant - superbuilds don't work with IDE (meaning that CMake doesn't adds anything valuable in terms of integration of several CMake based packages here).
You are still working with each sub-project (solution) individually as it was an independent project.
For that reason I try to use add_subdirectory() for CMake-based 3rd-party dependencies (some make it incredibly hard though).
Maybe I didn't worked with CMake that much, but I consider superbuilds a "hackish" solution. I know there is no a better one, though :)



--

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:
http://public.kitware.com/mailman/listinfo/cmake