Where is the best place to put the class methods? Directly in the class in the header file, if you are developing a library, or in an external source file?

The reason to have them directly in the header file is that you can have a header file only and no source file, so you get only one file. Besides, isn't it more complicated to have another source file to compile, you'll have to make a project file linking all the source files and the header files together, right?

On the other hand, I know some people think that there should be no functions, no methods or any executable code whatsoever in header file, that code should be in source files. This is making me a little unsure what is really the best place to put the methods. Is there any standard or is it up to the programmer? Does it depend on the size of the project one is developing? Or is it completely up to the programmer? Is there anything I haven't thought of?