How to add multi line comments in makefiles

Makefile

Makefile Problem Overview


Is there a way to comment out multiple lines in makefiles like as in C syntax /* */ ?

Makefile Solutions


Solution 1 - Makefile

No, there is nothing like C-style /* */ comments in makefiles. As somebody else suggested, you can make a multi-line comment by using line continuations. For example:

# This is the first line of a comment \
and this is still part of the comment \
as is this, since I keep ending each line \
with a backslash character

However, I imagine that you are probably looking to temporarily comment out a chunk of your makefile for debugging reasons, and adding a backslash on every line is not really practical. If you are using GNU make, I suggest you use the ifeq directive with a deliberately false expression. For example:

ifeq ("x","y")
# here's all your 'commented' makefile content...
endif

Hope that helps.

Solution 2 - Makefile

I believe the answer is no. The only comment styling I can find is # for each line, or use \ to wrap the first line.

Solution 3 - Makefile

A note about the idea of using ifeq to do multi-line comments in make(1). They don't work very well since if you write the following:

ifeq (0,1)
    do not risk ifeq comments
    else trouble will find you
    ifeq is even worse
endif

The text between the ifeq and endif will still be parsed by make which means that you cannot write whatever you want in that section. And if you want to write a long comment and write whatever you want in the comment (including $ signs, colons and more which all have a meaning for make) then you must comment every single line. So why the ifeq...:)

Solution 4 - Makefile

define BOGUS
lines
.....
endef

Solution 5 - Makefile

Not exactly what you're looking for, but similar in spirit. I don't expect it to be the accepted answer, but maybe it can help someone.

Assuming you're editing your makefiles in VIM:
Either decide which lines you want to comment or select them with 'v'.

Then you can use the regex s/^/#/ to comment out the lines
and s/^#// to revert them.

--Notes--

  • To open the vim command line, press : (colon)
  • To prep the command for the next 'n' lines, use .,+n
  • A sample line using "v" looks like: '<,'>s/^/#/

Solution 6 - Makefile

In emacs, you can mark the region you want to comment out and hit M-; (which runs comment-dwim).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAnkur AgarwalView Question on Stackoverflow
Solution 1 - MakefileEric MelskiView Answer on Stackoverflow
Solution 2 - MakefileBowlesCRView Answer on Stackoverflow
Solution 3 - MakefileMark VeltzerView Answer on Stackoverflow
Solution 4 - MakefilegiuliolunatiView Answer on Stackoverflow
Solution 5 - Makefilegoodguy5View Answer on Stackoverflow
Solution 6 - MakefileDrorView Answer on Stackoverflow