<div dir="ltr"><div><div><div><div><div>Hi all.<br><br>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.<br><br>One of the rules in the original Makefile is (simplified) as follows:<br><br></div>examples: all<br></div>  make -C example_dir all<br><br></div>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.<br><br></div>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:<br><br></div># Add the subdirectory but don't include its targets by default<br><div>add_subdirectory(example_dir EXCLUDE_FROM_ALL)<br><br></div><div># Add a custom target to build all examples<br></div><div>add_custom_target(examples ???)<br><br>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').<br><br></div><div>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.<br><br></div><div>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.<br><br></div><div>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?<br><br></div><div>Petr<br></div></div>