如何用其他目录中的依赖项G ++编译.cpp文件

时间:2019-07-14 22:04:34

标签: 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

谢谢:)

1 个答案:

答案 0 :(得分:0)

您可以像这样自行编译main:

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

此行将main.cpp编译为目标文件(不是应用程序),但为它提供了可以对包含文件进行细化的路径(-I<paht>

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

g++ -c subfolder/foo.cpp -Isubfolder -o foo.o

g++ -c subfolder/bar.cpp -Isubfolder -o bar.o

-c标志表示仅编译(而不链接)。因此,您可能想要将对象链接在一起:

g++ main.o foo.o bar.o -o myapp


或一行:

g++ main.cpp subfolder/foo.cpp subfolder/bar.cpp -Isubfolder -o myapp

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