Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

cmake - 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, ... . How do I list them using the cmake command line interface. I want a list of things that are valid to substitute for $target into 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.

question from:https://stackoverflow.com/questions/30793804/how-do-i-list-the-defined-make-targets-from-the-command-line

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...