Try: cmake --build . --target examples
(where "." represents the current working directory, and assumes you're in the top level build tree...) On Fri, Dec 5, 2014 at 5:46 AM, Petr Kmoch <[email protected]> wrote: > 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
