Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I list the defined make targets from the command line?

Tags:

cmake

I feel almost silly for asking this but I couldn't find anything on this...

Suppose I have a cmake project containing a number of targets (libraries, executables, external targets, etc). How do I list them using the cmake command line interface?

I want a list of things that are valid to substitute for $target in the following command line:

cmake . && cmake --build . --target $target 

Lot's of bonus points for a solution that uses neither grep nor find nor python nor perl nor... you get the idea.

like image 339
Holger Avatar asked Jun 12 '15 01:06

Holger


People also ask

How do I find CMake targets?

You can show the Targets View by clicking on the view dropdown in the Solution Explorer: If you have worked with the projects and Solutions generated by CMake before, you should feel right at home.

What is target in make command?

Typically, the target is a single executable file. The makefile is read by the make command, which determines the target file or files that are to be made and then compares the dates and times of the source files to decide which rules need to be invoked to construct the target.

How do I run all targets in makefile?

Note that the targets will be built in the order they were passed to the command line, so the first target to be built here is all , followed by clean (which again is nonsense). If you want to read more about how to correctly use makefiles, I suggest you to grab the book Managing Projects with GNU Make.


1 Answers

For Makefile generator build environments you could use

cmake --build . --target help 

And there is the graphical output solution (example found here):

cmake --graphviz=test.graph  dotty test.graph 

See also Generating Dependency Graphs with CMake and CMake Graphviz Output Cleaner.

If you don't have dotty installed, you can still make the target dependencies visible with enabling GLOBAL_DEPENDS_DEBUG_MODE in your CMakeLists.txt:

set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1) 

The disadavantage here is that you can't trigger it from the command line. It will always show on stderr when generating the make environment.

References

  • How can I get the list of dependencies of cmake target?
  • Internet Archive: "CMake: list of targets"
like image 102
Florian Avatar answered Oct 05 '22 19:10

Florian