Hello Petr,

In your example the original make command simply states that it should
switch to the example_dir and build an 'all' target there. It does not
specify how this target is build. That is the part that should end up in
your custom command. You can name the command 'examples', set WORKING_DIR
to the example_dir and then perform the steps needed to build. If you want
that to be a separate cmake based solution, you may want to take a look at
the external_project module.

With kind regards,
Micha Hergarden

2014-12-05 11:46 GMT+01:00 Petr Kmoch <petr.km...@gmail.com>:

> Hi all.
>
> I'm converting a small Makefile-based project to CMake. The project is not
> mine, so I am trying to match its existing buildsystem as closely as
> possible.
>
> One of the rules in the original Makefile is (simplified) as follows:
>
> examples: all
>   make -C example_dir all
>
> This gives a target 'examples' in the top-level Makefile, which is not
> included in 'all', but can be used to build all examples. I would like to
> achieve something similar with CMake.
>
> I added example_dir/CMakeLists.txt, which includes a project() command and
> defines all the targets for example executables. In the toplevel CMakeList,
> I did this:
>
> # Add the subdirectory but don't include its targets by default
> add_subdirectory(example_dir EXCLUDE_FROM_ALL)
>
> # Add a custom target to build all examples
> add_custom_target(examples ???)
>
> I'm stuck at the custom target. What I need for its command is a
> generator-agnostic equivalent for 'make -C example_dir all' (or 'make -f
> example_dir/Makefile all').
>
> I tried 'cmake --build ${CMAKE_CURRENT_BINARY_DIR}/example_dir ...', but
> this complains that example_dir does not contain a CMakeCache.txt (which is
> correct of course, it's not the toplevel directory). Then I remembered that
> build_command() can be used to get a command line to build a project;
> unfortunately, in 3.0 and later, this just returns 'cmake --build ...' and
> so is unusable in my situation.
>
> Is there a way to query CMake for the native command line (or something
> else) I could use to build the CMake-generated buildsystem in the
> subdirectory? I thought a bit about CMAKE_MAKE_PROGRAM, but that doesn't
> tell me anything about what arguments I should pass, and it's not even set
> on Visual Studio generators.
>
> As a workaround, I thought of not doing add_subdirectory() at all and
> instead adding a custom target with 'ctest --build-and-test ...', but I
> would prefer to configure & generate the two directories together. I plan
> to eventually add install() rules for the examples as well, and the
> examples also use one of the targets from the toplevel cmakelist in
> add_custom_command(OUTPUT ...), so I would really like to keep them as one
> CMake system. Is there a way to do so?
>
> Petr
>
> --
>
> 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 via email to