向Eclipse CDT Autotools项目添加链接器选项

Add linker options to Eclipse CDT Autotools project

本文关键字:链接 选项 添加 项目 Eclipse CDT Autotools      更新时间:2023-10-16

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

之后在一个名为"链接器"的选项卡中找到它们。
Project -> Properties -> C/C++ Build -> Settings

我在哪里得到链接器选项?

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

——编辑——

我遇到了一个建议,我应该把它添加到我的配置。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

配置。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

我试着在配置中添加一行。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管理的。

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

AM_LDFLAGS = -l<library name>

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

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

我把一些东西放错地方了。一个单独的Makefile。Am用于程序,因为它位于SRC子目录中。这需要进入Configure。
PKG_CHECK_MODULES([libav], [libavutil >= 6:0.8.10-1 libavformat >= 6:0.8.10-1 libavcodec >= 6:0.8.10-1])

这会生成两个变量在Makefile中使用。嗯,这些是……

$(libav_CFLAGS)
$(libav_LIBS)

顶层的Makefile。我只需要像之前那样指向那个目录…

SUBDIRS=src

程序的链接器标志在src/Makefile中处理。创建一个文件,包含如下内容…

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