【问题标题】:Add linker options to Eclipse CDT Autotools project将链接器选项添加到 Eclipse CDT Autotools 项目
【发布时间】:2014-04-30 02:35:35
【问题描述】:

我不确定我是否完全错过了这里的要点,但是我找不到在 Autotools 项目的 Eclipse CDT 插件中添加链接器选项的地方。 我想用 -l 选项链接静态库 我希望在转到

后在名称为“链接器”的选项卡中找到它们
Project -> Properties -> C/C++ Build -> Settings

我在哪里可以找到链接器选项?

如果我不能这样做,那么我可以手动编辑哪个配置或制作文件以获得相同的结果(链接静态库)

--编辑--

我遇到了一个建议,我应该将它添加到我的 configure.ac

PKG_CHECK_MODULES([DEPS], [libavutil >= 6:0.8.10-1 libavformat >= 6:0.8.10-1 libavcodec >= 6:0.8.10-1])

我试过了,但这并不能说服 autotools 告诉链接器链接适当的库。我错过了什么吗???

--编辑 2--

我的 Makefile.am 是 CDT 新项目向导为 autotools 项目生成的默认文件。

SUBDIRS=src

Config.ac 文件也是默认的...

dnl Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT(HelloWorld, 1.0)


AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE()

AC_PROG_CXX

AC_CONFIG_FILES(Makefile src/Makefile)
AC_OUTPUT

我尝试在 Config.ac 中添加如下所示的一行:

PKG_CHECK_MODULES([libav], [libavutil >= 6:0.8.10-1 libavformat >= 6:0.8.10-1 libavcodec >= 6:0.8.10-1])

我把这行放在'AC_PROG_CXX'行之后

然后我将以下内容添加到我的 Makefile.am...

HelloWorld_CPPFLAGS = $(libav_CFLAGS)
HelloWorld_LDFLAGS= $(libav_LIBS)

文件 HelloWorld.cpp 只是一个快速测试,应该报告 libavformat 版本

#include <stdio.h>
extern "C" {
    #include <libavformat/avformat.h>
}

int main(void) {
int avVer = avformat_version();
printf("libavformat version number: %d", avVer);
return 0;
}

这一切都由 eclipse CDT 管理。

【问题讨论】:

    标签: c++ eclipse linker autotools eclipse-cdt


    【解决方案1】:

    您需要在Makefile.am中将相关的-l标志添加到AM_LDFLAGS;例如:

    AM_LDFLAGS = -l<library name>
    

    configure.ac 中添加相应的代码以确保对其他系统的可移植性被认为是一个好主意。

    【讨论】:

    • 你能解释一下在哪里/如何将它添加到我的 configure.ac 文件中吗?
    • 这个链接应该可以帮助你:flameeyes.eu/autotools-mythbuster/autoconf/finding.html
    • 也许我做错了什么...当我更改我的 Makefile.am 文件时,没有任何变化。它根本不会尝试添加我的链接器命令。
    • 恐怕你需要发布你的 Makefile.am。
    【解决方案2】:

    这篇文章帮助澄清了一些事情: http://aquamentus.com/autoconf_tutorial.html

    我把一些东西放在了错误的地方。 一个单独的 Makefile.am 用于该程序,因为它位于 src 子目录中。 这需要按照之前的建议进入 Configure.ac

    PKG_CHECK_MODULES([libav], [libavutil >= 6:0.8.10-1 libavformat >= 6:0.8.10-1 libavcodec >= 6:0.8.10-1])
    

    这会生成两个要在 Makefile.am 中使用的变量,它们是...

    $(libav_CFLAGS)
    $(libav_LIBS)
    

    顶层 Makefile.am 只需要像以前一样指向那个目录...

    SUBDIRS=src
    

    程序的链接器标志在 src/Makefile.am 文件中处理,如下所示...

    bin_PROGRAMS=HelloWorld
    HelloWorld_SOURCES=HelloWorld.cpp
    HelloWorld_CPPFLAGS = $(libav_CFLAGS)
    HelloWorld_LDFLAGS= $(libav_LIBS)
    

    【讨论】:

    • 好,我很高兴你最终弄明白了!
    • 我也是,谢谢你的帮助。我现在正在学习如何绕过 libav 的陷阱。 :-D
    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2012-01-18
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多