Você não precisa acrescentar opção para arquivos .h que você fez. Apenas para biblioteca que você usa.
Se você está compilando um exemplo com vários arquivos, tem que linkar com os "arquivos .o" compilados de cada um deles. A maneira mais fácil é simplesmente compilar todos de uma vez.
Por exemplo, digamos que eu tenha os arquivos main.cpp, classe1.h classe1.cpp, classe2.h e classe2.cpp.
Digamos que o main.cpp usa funções ou classes nos demais arquivos. A melhor maneira então é compilar com o comando
gcc -o arquivo_compilado main.cpp, classe1.h classe1.cpp, classe2.h e classe2.cpp
Ou simplesmente
gcc -o arquivo_compilado *.h *.cpp
Se, por exemplo, o arquivo classe1.cpp usa uma função na biblioteca gtkmm, então eu teria que compilar indicando para o linkador para também linkar com a gtkmm
gcc -o arquivo_compilado main.cpp, classe1.h classe1.cpp, classe2.h e classe2.cpp