Я предполагаю, что вы на самом деле находитесь в UNIX (подобной) системе, поэтому оболочка заменит спецификацию подстановочного знака *.cpp
на фактические имена файлов. Другие системы могут вести себя по-другому, хотя я в этом сомневаюсь.
Вы сохранили свои файлы в структуре каталогов, поэтому просто сказав, что *.cpp
будет соответствовать файлу только в текущем каталоге, где вы вызываете g ++ - в вашем случае, предположительно, просто main.cpp.
Если вы хотите, чтобы все другие файлы также закрывались подстановочными знаками, вам также необходимо указать их в командной строке. В вашем случае:
g++ *.cpp Utilities/*.cpp Utilities/data/*.cpp
Если это действительно проще, чем просто назвать все файлы, я не могу судить.
РЕДАКТИРОВАТЬ: , как говорили другие, лучший способ для компиляции / сборки нетривиальных программ, конечно, с использованием make
или некоторого сопоставимого инструмента сборки.