【问题标题】:Build makefile with source and header in separate folder在单独的文件夹中使用源代码和头文件构建 makefile
【发布时间】:2016-04-08 12:53:54
【问题描述】:

我正在尝试为我的源代码和标题构建一个带有单独文件夹的 Makefile。我有一个项目的根目录,其中包含一个包含我的 .hpp 文件的包含文件夹,以及一个包含我的 .cpp 文件的源文件夹。我如何构建 Makefile,它使用相应的 .hpp 文件构建所有 .cpp ?

如何在名为 build 的文件夹中创建程序输出?

提前谢谢你

【问题讨论】:

    标签: c++ linux makefile


    【解决方案1】:

    Make 是如此多样化,有很多方法可以做到这一点,但最终结果是 -I<your hpp path>(或 -J)需要传递给编译器以告诉它在解析 #include 时要搜索的其他包含路径

    路径需要相对于规则目录的调用,或者相对于文件(我很确定编译器会搜索两者)。

    许多 makefile 使用 CPPOPTS 和 CCOPTS 或 makefile 中的一些变体来将额外的选项传递给 C 或 CPP 编译器。尝试添加:

    CPPOPTS += -I..\include
    

    到你的makefile(假设你已经隔离了你的源代码并以这种方式包含文件)。

    同样,这完全取决于您的 makefile。

    【讨论】:

    • Google 为CPPOPTS 提供了 1590 次点击,为CPPFLAGS 提供了 360000 次点击。因此,相对而言,使用 CPPOPTS 的 makefile 并不多。
    【解决方案2】:

    我正在尝试为我的源代码和标题构建一个带有单独文件夹的 Makefile。

    另一种方法是将标题与.cpp 文件放在同一目录中。在顶级包含文件夹中,您可以将符号链接放置到标题中。

    【讨论】:

    • 我认为这个解决方案会因为符号链接而无法添加到大多数版本控制系统中,所以我不推荐它。然而,我所做的一件非常骇人听闻的事情是添加一个本地 .h 文件,该文件仅包含使用已知相对路径的非本地文件。我只在极少数情况下这样做,这与避免干扰已经存在的 makefile 但需要在两个项目之间共享源/头文件有关。同样,我不建议这样做。使用-I-J
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    相关资源
    最近更新 更多