我的项目的组织方式如下:
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
谢谢:)
答案 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)时,第一种方法(分两步完成)通常比较容易,而第二种方法(一行)则更容易手动完成