【问题标题】:How To G++ compile A .cpp File With Dependencies In Another Directory如何 G++ 在另一个目录中编译具有依赖关系的 .cpp 文件
【发布时间】:2019-11-23 16:03:12
【问题描述】:

我的项目按以下方式组织:

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++ main.cpp subfolder/foo.cpp subfolder/bar.cpp -o outputname

标签: c++ directory compilation dependencies


【解决方案1】:

您可以像这样自行编译 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)时,第一种方法(分两步完成)通常更容易,第二种(在一行中)更容易手动完成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多