How do I list the defined make targets from the command line?
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.
Solution 1:
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"
Solution 2:
I think you might be looking for the command make help
.
When I run make help
(after running cmake ..
) I get the following output:
The following are some of the valid targets for this Makefile:
... all (the default if no target is provided)
... clean
... depend
etc
You could also read the Makefile
that cmake auto-generates for you.