【发布时间】:2020-02-15 14:51:08
【问题描述】:
我在 GTKMM 教程中做“Hello World”,“app”使用三个文件,main.cc、helloworld.h 和 helloworld.cc。
一开始我以为是编译main.cc:
g++ -o HW main.cc $(pkg-config ... )
就够了,但是会报错(未定义对Helloworld::Helloworld的引用)等等。
换句话说,它编译 main 和 header,而不是 HW 类,这是有道理的,因为 header 包含在 Main 而不是 Helloworld.cc 中。问题是我有点害怕包含它,因为我在其他问题中读到“包含所有内容是一种不好的做法”。
话虽如此,当我使用同一命令中的所有文件进行编译时:
g++ -o HW main.cc helloworld.cc $(pkg-config ... )
“应用程序”可以正常运行。
那么,既然使用最后一个命令有效,那么以这种方式编译是一种好习惯吗?
如果我的应用使用大量类会怎样?
我必须在命令中手动将它们全部写下来吗?
如果不是,我必须使用#include吗?
对所有 cc 使用的文件使用#include 是一种好习惯吗?
【问题讨论】:
-
永远不要包含 .c/.cc//cpp 文件。您可以像使用
g++ -o HW main.cc helloworld.cc $(pkg-config ... )一样将它们链接在一起 -
当您有很多文件时,请使用 make 或 ide 等构建系统,您可以在其中将所有文件放入项目中。
-
@GNSYS,一旦超过 3 或 4 个文件,在 IDE 或其他构建管理系统中使用 makefile、CMake、项目设置会变得很有用。
-
我认为你可以做类似
g++ -o HW *.cc $(pkg-config ... )的事情,但我不能 100% 确定,因为我不使用 Linux。这也不能让您控制它拾取的文件。 -
小伙子们在 cmets 中回答太多了