C++ 如何使用G++;在另一个目录中编译具有依赖项的.cpp文件

C++ 如何使用G++;在另一个目录中编译具有依赖项的.cpp文件,c++,directory,compilation,dependencies,C++,Directory,Compilation,Dependencies,我的项目组织方式如下: mainfolder | |_main.cpp | |_subfolder | |_foo.hpp |_foo.cpp |_bar.hpp |_bar.cpp main.cpp使用foo.hpp和bar.hpp中的函数和变量,它们的函数实现分别在foo.cpp和bar.cpp中 我想知道如何使用g++编译main.cpp 谢谢:)您可以自

我的项目组织方式如下:

mainfolder
    |
    |_main.cpp
    |
    |_subfolder
          |
          |_foo.hpp
          |_foo.cpp
          |_bar.hpp
          |_bar.cpp

main.cpp使用foo.hpp和bar.hpp中的函数和变量,它们的函数实现分别在foo.cpp和bar.cpp中

我想知道如何使用g++编译main.cpp


谢谢:)

您可以自己编译main,如下所示:

g++-c main.cpp-Isubfolder-o main.o

这一行将main.cpp编译成一个对象文件(不是应用程序),但它为它提供了一个路径(
-I
),在该路径中它可以修改include文件

然后,您可能还希望将其他两个文件编译为对象:

g++-c子文件夹/foo.cpp-Isubfolder-o foo.o

g++-c子文件夹/bar.cpp-Isubfolder-o bar.o

其中
-c
标志表示仅编译(而非链接)。因此,您可能希望将对象链接在一起:

g++main.ofoo.obar.o-omyapp


或者在一行中:


g++main.cpp子文件夹/foo.cpp子文件夹/bar.cpp-Isubfolder-o myapp


当您想要创建一个模式规则来编译文件(使用gnu make)时,第一种方法(分两步完成)通常更容易,第二种方法(在一行中)更容易手动完成

您想要构建对象文件,还是只构建可执行文件
main
?您希望在何处生成文件?
g++main.cpp子文件夹/foo.cpp子文件夹/bar.cpp-o outputname