我不确定我是否完全忽略了这一点,但我找不到在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管理。
答案 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)