将链接器选项添加到Eclipse CDT Autotools项目

时间:2014-03-22 16:52:11

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

我不确定我是否完全忽略了这一点,但我找不到在Eclipse CDT插件中为Autotools项目添加链接器选项的地方。 我想用静态库链接-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是由autotools项目的CDT新项目向导生成的默认值。

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管理。

2 个答案:

答案 0 :(得分:1)

您需要在-l中向AM_LDFLAGS添加相关的Makefile.am标记; e.g:

AM_LDFLAGS = -l<library name>

configure.ac中添加相应的代码以确保可移植到其他系统是个好主意。

答案 1 :(得分:1)

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

我把一些东西放在了错误的地方。 单独的Makefile.am用于程序,因为它位于src子目录中。 这需要在

之前将Configure.ac作为sugested进入
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)