Hi Micha. I understand how the original works, and I know I can work around it with a separate buildsystem (using e.g. ExternalProject_Add() or ctest --build-and-test). I was just wondering: since CMake generates a .sln (or Makefile) in the subdirectory (because I put a project() call in there), does it somehow offer a way to build the 'all' target from that solution (or Makefile)?
Petr On Fri, Dec 5, 2014 at 3:42 PM, Micha Hergarden <[email protected]> wrote: > 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 <[email protected]>: > >> 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
