[CMake] Get native build command with CMake 3+

David Cole DLRdave at aol.com
Fri Dec 5 10:19:34 EST 2014


No, I meant exactly what I said.

--target takes a CMake target name.


HTH,
D



On Fri, Dec 5, 2014 at 9:23 AM, Petr Kmoch <petr.kmoch at gmail.com> wrote:
> I assume you actually meant 'cmake --build . --target example_dir', the name
> of the directory. 'examples' is the name of the custom target; if that
> target's command was to build itself, I believe it would become a fork bomb.
>
> Anyway, I tried it with the directory name, it doesn't work. I'm generating
> with VS2008, and devenv was complaining about "Invalid project." Which kind
> of makes sense, there is no 'example_dir' project in the solution.
>
> On Fri, Dec 5, 2014 at 2:59 PM, David Cole <DLRdave at aol.com> wrote:
>>
>> 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 <petr.kmoch at gmail.com> 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
>
>


More information about the CMake mailing list