【问题标题】:Adding a library to a makefile将库添加到 makefile
【发布时间】:2015-10-02 18:38:52
【问题描述】:

我刚刚为一个项目安装了RtMidi 并编译了它。 tests 文件夹中的示例可以工作,如果我将代码放在文件夹中并将其包含在编译所有示例的 Makefile 中,我的代码也可以工作。如何在 #include <RtMidi.h> 的项目中使用 RtMidi 而不是将代码放在测试文件夹中?更具体地说,我应该在我的 Makefile 中放入什么?我已经阅读了一些关于动态和静态库的内容,但我不知道我应该寻找什么。我尝试添加 -llibrtmidi/usr/local/lib/librtmidi.a 没有成功。

【问题讨论】:

    标签: c++ makefile static-libraries


    【解决方案1】:

    在标准 Makefile 中,CXXFLAGS 宏定义了 C++ 编译器的标志。您需要将 -I<path to header directory> 添加到此宏中,以便编译器找到 RtMidi 头文件。

    然后您需要将-L<path to lib directory> 添加到Makefile 的链接步骤,以便-lrtmidi 可以找到库文件。 (请注意,您省略了 -l 命令的 lib 前缀)

    【讨论】:

    • 谢谢!那工作得很好。为什么我必须添加-I/usr/local/include/-L/usr/local/lib/?默认情况下编译器不在那里寻找库吗?
    • 通常编译器默认配置为在 /usr/local 中查找——但不是在所有系统上。您的系统必须配置为默认不使用 /usr/local。
    【解决方案2】:

    根据您对环境的描述,您可能需要类似

    CPPFLAGS += -I/usr/local/include
    
    LDFLAGS += -L/usr/local/lib
    
    LDLIBS += -lrtmidi
    

    在你的 Makefile 中。 make 使用了很多 implicit variables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多