簡體   English   中英

將鏈接器選項添加到Eclipse CDT Autotools項目

[英]Add linker options to Eclipse CDT Autotools project

我不確定是否完全遺漏了這里的要點,但是我找不到在Autotools項目的Eclipse CDT插件中添加鏈接器選項的地方。 我想用-l選項鏈接靜態庫,我希望在標簽中找到類似“鏈接器”之類的標簽

Project -> Properties -> C/C++ Build -> Settings

在哪里可以找到鏈接器選項?

如果我不能這樣做,那么我可以手動編輯哪個配置文件或make文件以達到相同的結果(鏈接靜態庫)

- 編輯 -

我遇到了一個建議,我應該將此添加到我的configure.ac

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

我試過了,但這不能說服自動工具告訴鏈接器鏈接適當的庫。 我錯過了什么嗎?

-編輯2--

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

您需要在Makefile.am中將相關的-l標志添加到AM_LDFLAGS 例如:

AM_LDFLAGS = -l<library name>

最好在configure.ac添加相應的代碼,以確保可移植到其他系統。

本文有助於澄清問題: 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM