Hi, this original makefile rule was probably just a simplification. Make your custom target depend on all example targets which link the desired parts, then you get what the original makefile author just didn't want to do manually: having built all examples and their dependencies. And it's less ugly...
HS Am 5. Dezember 2014 11:46:03 MEZ, schrieb 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